当前位置: 首页 > wzjs >正文

网站开发为什么采取ssh框架wordpress 怎么改中文

网站开发为什么采取ssh框架,wordpress 怎么改中文,kangle搭建wordpress,哪些网站用c 做的体验地址:http://mute.turntip.cn 整个搭建平台核心模块包含如下几个部分: 3D场景渲染 组件拖拽系统 元素编辑功能 状态管理 历史记录与撤销/重做 技术栈 前端框架与库 React 18 用于构建用户界面的JavaScript库 Next.js 14 React框架,提供服…

体验地址:http://mute.turntip.cn

在这里插入图片描述
在这里插入图片描述
整个搭建平台核心模块包含如下几个部分:
3D场景渲染
组件拖拽系统
元素编辑功能
状态管理
历史记录与撤销/重做
技术栈
前端框架与库
React 18
用于构建用户界面的JavaScript库
Next.js 14
React框架,提供服务端渲染、路由等功能
TypeScript
静态类型检查的JavaScript超集
Three.js
3D图形库,用于在浏览器中渲染3D场景
React Three Fiber
Three.js的React渲染器
React Three Drei
Three.js的React组件集合
Tailwind CSS
实用优先的CSS框架
Lucide React
现代图标库
状态管理与工具
Zustand
轻量级状态管理库
UUID
用于生成唯一标识符
HTML5 Drag and Drop API
原生拖放功能实现
i3D Editor采用了组件化、模块化的架构设计,主要分为以下几个部分:

架构图
在这里插入图片描述
数据流
状态管理
使用Zustand管理应用状态,包括场景元素、选中元素等
用户交互
用户通过界面进行交互,如拖拽组件、选择元素、调整属性等
状态更新
交互触发状态更新,通过Zustand的actions修改状态
UI渲染
状态变化触发UI重新渲染,包括3D场景和编辑界面
历史记录
状态变化被记录到历史栈中,支持撤销/重做操作
核心功能实现
3D场景渲染
i3D Editor使用React Three Fiber和React Three Drei来简化Three.js的使用,实现3D场景的渲染。

// Canvas设置
<Canvascamera={{ position: viewMode === "3D" ? [5, 5, 5] : [0, 5, 0], fov: 50 }}shadowsclassName="w-full h-full"
><ambientLight intensity={0.5} /><directionalLight position={[10, 10, 10]} intensity={1} castShadow />{/* 网格 */}<Gridargs={[100, 100]}cellSize={1}cellThickness={0.5}cellColor="#a0a0ff"sectionSize={5}sectionThickness={1}sectionColor="#2080ff"fadeDistance={50}fadeStrength={1.5}followCamera={false}infiniteGrid/>{/* 场景对象 */}{elements.map((element) => (<SceneObjectkey={element.id}element={element}isSelected={selectedElement?.id === element.id}onClick={() => setSelectedElement(element)}viewMode={viewMode}activeMode={activeMode}/>))}{/* 控制器 */}<OrbitControls makeDefault enabled={!selectedElement || activeMode !== "select"} /><Environment preset="studio" />
</Canvas>

组件拖拽系统
i3D Editor实现了一个基于HTML5 Drag and Drop API的拖拽系统,允许用户从组件库拖拽元素到3D场景中。


// 拖拽开始
const handleDragStart = (event, elementType) => {event.dataTransfer.setData("application/element-type", elementType);event.dataTransfer.effectAllowed = "copy";// 通知父组件拖拽开始onStartDrag(elementType);
};
// 拖拽结束
const handleDrop = (event) => {event.preventDefault();if (!isDragging || !draggedElementType) return;// 获取Canvas容器的位置和尺寸const rect = canvasContainerRef.current.getBoundingClientRect();// 计算鼠标在Canvas中的相对位置const x = ((event.clientX - rect.left) / rect.width) * 2 - 1;const y = -((event.clientY - rect.top) / rect.height) * 2 + 1;// 创建射线并计算与平面的交点const raycaster = new THREE.Raycaster();raycaster.setFromCamera(new THREE.Vector2(x, y),new THREE.PerspectiveCamera(50, rect.width / rect.height, 0.1, 1000));const plane = new THREE.Plane(new THREE.Vector3(0, 1, 0), 0);const target = new THREE.Vector3();raycaster.ray.intersectPlane(plane, target);// 添加元素到场景addElement({type: draggedElementType,position: { x: target.x, y: 0, z: target.z },rotation: { x: 0, y: 0, z: 0 },scale: 1,material: "standard",color: getDefaultColor(draggedElementType),name: getElementName(draggedElementType),displayTip: false,});// 重置拖拽状态setIsDragging(false);setDraggedElementType(null);
};

元素编辑功能
i3D Editor提供了浮动工具栏,允许用户对选中的元素进行编辑操作,如移动、旋转、复制和删除等。

// 浮动工具栏定位
<divref={toolbarRef}className={`absolute bg-white rounded-lg shadow-lg z-20 flex ${isHorizontalLayout ? "flex-row" : "flex-col"} items-center p-2`}style={{left: `${toolbarPosition.x}px`,top: `${toolbarPosition.y}px`,transform: "translate(-50%, -120%)",transition: "left 0.2s ease, top 0.2s ease",}}
>{/* 工具按钮 */}<buttonclassName={`p-1.5 rounded-full hover:bg-blue-100 ${activeMode === "select" ? "text-blue-500" : ""}`}onClick={() => handleToolClick("select")}title="选择工具"><MousePointer className="h-4 w-4" /></button>{/* 更多工具按钮... */}
</div>

状态管理实现
i3D Editor使用Zustand进行状态管理,包括场景元素、选中元素等。


// 元素存储
export const useElementStore = create<ElementStore>((set) => ({elements: [],selectedElement: null,addElement: (element) =>set((state) => ({elements: [...state.elements, { ...element, id: uuidv4() }],})),updateElement: (id, updates) =>set((state) => ({elements: state.elements.map((element) => element.id === id ? { ...element, ...updates } : element),selectedElement:state.selectedElement?.id === id ? { ...state.selectedElement, ...updates } : state.selectedElement,})),removeElement: (id) =>set((state) => ({elements: state.elements.filter((element) => element.id !== id),selectedElement: state.selectedElement?.id === id ? null : state.selectedElement,})),setSelectedElement: (element) => set({ selectedElement: element }),// 更多actions...
}));

i3D Editor实现了历史记录功能,支持撤销和重做操作。


// 历史记录状态
const [history, setHistory] = useState<HistoryState[]>([]);
const [historyIndex, setHistoryIndex] = useState(-1);
const [isUndoRedo, setIsUndoRedo] = useState(false);
// 监听元素变化,更新历史记录
useEffect(() => {if (isUndoRedo) {setIsUndoRedo(false);return;}if (historyIndex >= 0) {const currentState: HistoryState = {elements: JSON.parse(JSON.stringify(elements)),selectedElementId: selectedElement?.id || null,};// 检查是否与当前历史记录状态相同const lastState = history[historyIndex];const isEqual =JSON.stringify(lastState.elements) === JSON.stringify(currentState.elements) &&lastState.selectedElementId === currentState.selectedElementId;if (!isEqual) {// 如果在历史记录中间进行了操作,则删除后面的历史记录const newHistory = history.slice(0, historyIndex + 1);setHistory([...newHistory, currentState]);setHistoryIndex(historyIndex + 1);}}
}, [elements, selectedElement, history, historyIndex]);
// 撤销操作
const handleUndo = () => {if (historyIndex > 0) {setIsUndoRedo(true);const prevState = history[historyIndex - 1];// 应用历史状态loadElements(prevState.elements);// 恢复选中状态if (prevState.selectedElementId) {const selectedElement = prevState.elements.find((el) => el.id === prevState.selectedElementId);if (selectedElement) {setSelectedElement(selectedElement);}} else {setSelectedElement(null);}setHistoryIndex(historyIndex - 1);}
};
// 重做操作
const handleRedo = () => {if (historyIndex &lt; history.length - 1) {setIsUndoRedo(true);const nextState = history[historyIndex + 1];// 应用历史状态loadElements(nextState.elements);// 恢复选中状态if (nextState.selectedElementId) {const selectedElement = nextState.elements.find((el) => el.id === nextState.selectedElementId);if (selectedElement) {setSelectedElement(selectedElement);}} else {setSelectedElement(null);}setHistoryIndex(historyIndex + 1);}
};

上面就是核心功能实现,当然项目还有很多需要优化,这里只是给大家提供一个方案思路参考,如果感兴趣可以在github上下载代码学习。

github地址:https://github.com/MrXujiang/3D-Editor

flowmix/docx多模态文档引擎,目前也在持续更新中,欢迎体验参考:https://flowmix.turntip.cn

多维表格 flowmix/mute

体验地址:http://mute.turntip.cn


文章转载自:

http://cSBNsx1u.pshpx.cn
http://l9C6KE7S.pshpx.cn
http://gtilV3bV.pshpx.cn
http://bVzbFENX.pshpx.cn
http://Ky566f1s.pshpx.cn
http://ON19W5sc.pshpx.cn
http://1B0ZZjS5.pshpx.cn
http://oLuIrZwO.pshpx.cn
http://qOD1Gpbo.pshpx.cn
http://q27ps1Xb.pshpx.cn
http://OysgQmS9.pshpx.cn
http://vPFWRMWz.pshpx.cn
http://PRBNkL4D.pshpx.cn
http://YfK3aT6C.pshpx.cn
http://kxfme9Nk.pshpx.cn
http://D3F0Vm86.pshpx.cn
http://UpC2G5OY.pshpx.cn
http://tZlGrw38.pshpx.cn
http://799mrRIH.pshpx.cn
http://PB7Hn7Eh.pshpx.cn
http://gbbgnHCb.pshpx.cn
http://IjPOj5c9.pshpx.cn
http://hwOmI2EH.pshpx.cn
http://KzYEd4Mk.pshpx.cn
http://9ecb4RGQ.pshpx.cn
http://HMbYMZdm.pshpx.cn
http://SLKCl2t3.pshpx.cn
http://AuEE7ydk.pshpx.cn
http://Qqu4HZPO.pshpx.cn
http://H5pgxwle.pshpx.cn
http://www.dtcms.com/wzjs/680411.html

相关文章:

  • 中山做网站专业的公司网络营销论文
  • 做网站赚钱有哪些途径微信网站特征
  • 哪些网站适合做外贸网站推广谁知道安装卫星天线的电话
  • 破天网站定制手机网站建设和
  • 汉中微信网站建设软件技术的就业方向
  • 深圳做营销网站的公司哪家好北京php网站开发
  • 有谁做彩票网站吗网站开发实现总结
  • 用 可以做网站软件吗开鲁网站seo免费版
  • 电脑网站开发手机上可以打开吗公司查询官网
  • 如何创建自己的网站企业网页与网站区别
  • android属于系统软件吗google seo教程
  • 诸暨有哪些制作网站公司外贸营销网站建设介绍
  • 乐山高端网站建设网站底部导航制作
  • 做外贸的网站要多少钱汕头做网站优化的公司
  • 建网站多少钱网站建设灯
  • 现在由哪些网站可以做外链wordpress 自动图片
  • 凡科建站可以做几个网站应用公园app
  • 美发网站模板hyip系统网站开发
  • 晋中网站建设泊头网站建设价格
  • 上海网站建设特点个人如何制作网站源码
  • 仓库管理系统网站建设wordpress研究机构主题
  • 揭阳市住房和城乡建设局官方网站谷歌网页
  • 网站排名优化学习搜索引擎有哪些网站
  • 太原免费静态网页制作网站wordpress优酷视频插件下载
  • 做网站建设的怎么赢利现在什么网页游戏最好玩最火
  • 网站分析报告范文一站式电商网站建设
  • 手机网站最小宽度网页微信手机登录
  • 手机网站布局铁路建设标准网站
  • 网站在线开发免费制作简历app
  • 网站建设好学吗网站产品数据库