【前端】原生项目与框架项目区别
不定期更新,建议关注收藏点赞。
使用 HTML + CSS + JS 和 Vue 或 React 开发的项目各有其优势与不足,适用于不同的场景。目前基本上都采用框架,
- 总结
- 何时选择 HTML + CSS + JS:
适用于 小型项目、简单静态页面、不需要复杂交互 或 快速原型开发。 - 何时选择 Vue / React:
适用于 中大型项目、动态内容、复杂交互、需要高度维护和扩展的应用,特别是需要进行 组件化 和 状态管理 的场景。
| 技术 | 优点 | 缺点 |
|---|---|---|
| HTML + CSS + JS | 轻量、直观、兼容性强、无框架依赖、调试简单 | 代码冗长、缺乏模块化、开发效率低、扩展性差、难以管理复杂应用 |
| Vue / React | 组件化开发、响应式、状态管理、开发工具丰富、性能优化、高效开发、大规模应用支持 | 学习曲线、框架依赖、性能开销、需要构建工具、配置复杂性高 |
使用 HTML + CSS + JS 开发
- 优点:
- 直接性与兼容性:
直接在浏览器中执行,无需任何构建工具或框架,兼容所有现代浏览器。
对于简单的网页或小型项目,使用原生 HTML、CSS 和 JS 就足够了,轻量且直观。 - 性能:
由于没有使用额外的框架和库,性能较高,特别是在静态页面或少量交互的场景下。
页面加载速度快,因为没有额外的框架代码需要加载。 - 灵活性:
完全控制代码和样式,可以根据需求自由设计和实现功能,不受框架约束。 - 易于调试:
原生的 HTML 和 JS 更容易调试,因为开发者不需要理解框架的内部工作原理。
- 缺点:
- 代码冗长与重复:
对于较复杂的交互,可能需要大量的原生 JavaScript 代码,导致代码结构不清晰,维护起来较为困难。
随着项目复杂度的增加,可能会有很多重复代码,导致可维护性差。 - 缺乏组件化与模块化:
难以实现组件化的开发模式,代码重用性差,不能像框架那样方便地管理组件、状态和生命周期。
随着项目规模增大,原生 JS 很难做到像框架那样的高效结构化管理。 - 开发效率低:
对于复杂的交互和大规模应用,手动实现某些功能可能需要更多的时间和精力。例如,表单验证、路由管理、状态管理等功能都需要额外编写代码。 - 项目扩展性差:
随着项目增加,维护和扩展变得越来越困难,可能会出现跨模块的依赖和管理问题。
使用Vue 或 React 开发
- 优点:
- 组件化开发:
Vue 和 React 都提倡组件化开发,将页面分解为多个可复用的组件,易于管理和维护。
代码更具可读性和组织性,减少重复,提升开发效率。 - 高效的状态管理:
React 和 Vue 提供了 响应式的数据绑定,组件会自动根据数据变化更新视图。
可以使用 Vuex 或 Redux 进行复杂的状态管理,使得多组件间的状态流转更加高效和可维护。 - 强大的开发工具和生态:
React 和 Vue 提供了许多开发工具和插件,例如 React DevTools 和 Vue DevTools,帮助开发者调试和优化应用。 - 丰富的第三方库和社区支持,使得开发过程更加高效,解决常见问题时可以快速找到解决方案。
- 优化的性能:
Vue 和 React 都采用了虚拟 DOM技术,只在数据发生变化时对比差异,并更新实际 DOM,减少不必要的渲染,提升性能。
React 和 Vue 的 懒加载、代码分割等特性可以帮助减小初次加载时的资源体积,提高应用性能。 - 更高的开发效率:
框架提供了许多内置的功能(如路由管理、表单处理、生命周期管理等),减少了开发者编写的代码量和时间。
- 缺点:
- 学习曲线:
Vue 和 React 都有一定的学习曲线,特别是对初学者来说,理解它们的生命周期、状态管理、路由等概念可能比较困难。
对于小型项目,使用这些框架可能显得过于复杂,开发者需要投入更多时间理解和配置框架。 - 框架依赖:
需要依赖框架本身以及其生态系统,如果框架或其生态发生重大变化,可能会影响项目的更新和维护。
过度依赖框架的开发模式可能会导致项目对框架的依赖过重,难以迁移或替换。 - 性能开销:
框架自身引入的额外代码会增加页面的初始加载时间,尤其是当没有进行优化时。
对于非常简单的应用,Vue 或 React 可能会导致性能的负担,增加不必要的复杂度。 - 工具链和构建复杂性:
Vue 和 React 通常需要使用构建工具(如 Webpack、Babel 等)进行打包和编译,这会增加项目的复杂性,特别是对于不熟悉构建工具的开发者。
需要管理相关的依赖库、版本和配置,稍有不慎就可能出现兼容性问题。
相关文章:
【前端】原生项目与框架项目区别
不定期更新,建议关注收藏点赞。 使用 HTML CSS JS 和 Vue 或 React 开发的项目各有其优势与不足,适用于不同的场景。目前基本上都采用框架, 总结 何时选择 HTML CSS JS: 适用于 小型项目、简单静态页面、不需要复杂交互 或 …...
STM32基础教程——PWM驱动舵机
目录 前言 技术实现 原理图 接线图 代码实现 内容要点 PWM基本结构 开启外设时钟 配置GPIO端口 配置时基单元 初始化输出比较单元 调整PWM占空比 输出比较通道重映射 舵机角度设置 实验结果 问题记录 前言 舵机(Servo)是一种位置ÿ…...
ThreadLocal详解与高频场景实战指南
ThreadLocal详解与高频场景实战指南 1. ThreadLocal概述 ThreadLocal是Java提供的线程本地变量机制,用于实现线程级别的数据隔离。每个访问该变量的线程都会获得独立的变量副本,适用于需要避免线程间共享数据的场景。 特点: 线程封闭性&a…...
odata 搜索帮助
参考如下链接: FIORI ELement list report 细节开发,设置过滤器,搜索帮助object page跳转等_fiori element label 变量-CSDN博客 注:odata搜索帮助可以直接将值带出来,而不需要进行任何的重定义 搜索帮助metedata配置…...
RK3588开发笔记-RTL8852wifi6模块驱动编译报错解决
目录 前言 一、问题背景 二、驱动编译 总结 前言 在基于 RK3588 进行开发,使用 RTL8852 WiFi6 模块时,遇到了一个让人头疼的驱动编译报错问题:“VFs_internal_I_am_really_a_filesystem_and_am_NoT_a_driver, but does”。经过一番摸索和尝试,最终成功解决了这个问题,在…...
Docker基本命令VS Code远程连接
Docker基本命令 创建自己的docker容器:docker run --net host --name Container_name --gpus all --shm-size 1t -it -v Your_Path:Your_Dir mllm:mac /bin/bashdocker run:用于创建并启动一个新容器-name:为当前新建的容器命名-gpus&#x…...
第二天 开始Unity Shader的学习之旅之熟悉顶点着色器和片元着色器
Shader初学者的学习笔记 第二天 开始Unity Shader的学习之旅之熟悉顶点着色器和片元着色器 文章目录 Shader初学者的学习笔记前言一、顶点/片元着色器的基本结构① Shader "Unity Shaders Book/Chapter 5/ Simple Shader"② SubShader③ CGPROGRAM和ENDCG④ 指明顶点…...
大疆上云api直播功能如何实现
概述 流媒体服务器作为直播画面的中转站,它接收推流端的相机画面,同时拉流端找它获取相机的画面。整个流程如下: 在流媒体服务器上创建流媒体应用(app),一个流媒体服务器上面可以创建多个流媒体应用约定推拉流的地址。假设流媒体服务器工作在1935端口上面,假设创建的流…...
理解文字识别:一文读懂OCR商业化产品的算法逻辑
文字识别是一项“历久弥新”的技术。早在上世纪初,工程师们就开始尝试使用当时有限的硬件设备扫描并识别微缩胶片、纸张上的字符。随着时代和技术的发展,人们在日常生活中使用的电子设备不断更新换代,文字识别的需求成为一项必备的技术基础&a…...
使用 Cursor、MCP 和 Figma 实现工程化项目自动化,提升高达 200% 效率
直接上手不多说其他的! 一、准备动作 1、Cursor下载安卓 1.1访问官方网站 打开您的网络浏览器,访问 Cursor 的官方网站:https://www.cursor.com/cn 1.2开始下载: 点击"Download for free" 根据您的浏览器设置,会自…...
Arduino、ESP32驱动GUVA-S12SD UV紫外线传感器(光照传感器篇)
目录 1、传感器特性 2、控制器和传感器连线图 3、驱动程序 UV紫外线传感器是一个测试紫外线总量的最佳传感器,它不需要使用波长滤波器,只对紫外线敏感。 Arduino UV紫外线传感器,直接输出对应紫外线指数(UV INDEX)的线性电压,输出电压范围大约0~1100mV(对应UV INDEX值…...
PTA 1097-矩阵行平移
给定一个𝑛𝑛nn的整数矩阵。对任一给定的正整数𝑘<𝑛k<n,我们将矩阵的奇数行的元素整体向右依次平移1、……、𝑘、1、……、𝑘、……1、……、k、1、……、k、……个位置,平移…...
Notepad++ 替换 换行符 为 逗号
多行转一行,逗号分隔 SPO2025032575773 SPO2025032575772 SPO2025032575771 SPO2025032575771 SPO2025032575770为了方便快速替换,我们需要先知道这样类型的数据都存在哪些换行符。 点击【视图】-【显示符号】-【显示行尾符】 对于显示的行尾换行符【C…...
使用飞书API自动化更新共享表格数据
飞书API开发之自动更新共享表格 天马行空需求需求拆解1、网站数据爬取2、飞书API调用2.1 开发流程2.2 创建应用2.3 配置应用2.4 发布应用2.5 修改表格权限2.6 获取tenant_access_token2.7 调用API插入数据 总结 天马行空 之前一直都是更新的爬虫逆向内容,工作中基本…...
使用vscode搭建pywebview集成vue项目示例
文章目录 前言环境准备项目源码下载一、项目说明1 目录结构2 前端项目3 后端项目获取python安装包(选择对应版本及系统) 三、调试与生成可执行文件1 本地调试2 打包应用 四、核心代码说明1、package.json2、vite.config.ts设置3、main.py后端入口文件说明 参考文档 前言 本节我…...
蓝桥杯嵌入式十六届模拟三
由硬件框图可以知道我们要配置LED 和按键 一.LED 先配置LED的八个引脚为GPIO_OutPut,锁存器PD2也是,然后都设置为起始高电平,生成代码时还要去解决引脚冲突问题 二.按键 按键配置,由原理图按键所对引脚要GPIO_Input 生成代码,在文件夹中添加code文件夹,code中添加fun.…...
onedav一为导航批量自动化导入网址(完整教程)
OneNav作为一个功能强大的导航工具,支持后台管理、加密链接、浏览器书签批量导入等功能,能够帮助用户轻松打造专属的导航页面。今天,我将为大家详细介绍如何实现OneNav导航站的批量自动化导入网址。 1、建立要批量导入的表格 格局需要创建表格,表格的要求是一定要有需要,…...
Linux之编辑器vim命令
vi/vim命令: 终端下编辑文件的首选工具,号称编辑器之神 基本上分为三种模式,分别是 命令模式(command mode)>输入vi的命令和快捷键,默认打开文件的时候的模式插入模式(insert mode&#x…...
备赛蓝桥杯之第十六届模拟赛2期职业院校组第四题:地址识别
提示:本篇文章仅仅是作者自己目前在备赛蓝桥杯中,自己学习与刷题的学习笔记,写的不好,欢迎大家批评与建议 由于个别题目代码量与题目量偏大,请大家自己去蓝桥杯官网【连接高校和企业 - 蓝桥云课】去寻找原题࿰…...
多模态自动驾驶混合渲染HRMAD:将NeRF和3DGS进行感知验证和端到端AD测试
基于3DGS和NeRF的三维重建技术在过去的一年中取得了快速的进步,动态模型也变得越来越普遍,然而这些模型仅限于处理原始轨迹域内的对象。 HRMAD作为一种混合方案,将传统的基于网格的动态三维神经重建和物理渲染优势结合,支持在任意…...
mac m3 pro 部署 stable diffusion webui
什么是Stable Diffusion WebUI ? Stable Diffusion WebUI 是一个基于Stable Diffusion模型开发的图形用户界面(GUI)工具。通过这个工具,我们可以很方便的基于提示词,描述一段文本来指导模型生成相应的图像。相比较通过…...
多层感知机实现
激活函数 非线性 ReLU函数 修正线性单元 rectified linear unit relu(x)max(0,x) relu的导数: sigmoid函数 s i g m o i d ( x ) 1 1 e − x sigmoid(x)\frac{1}{1e^{-x}} sigmoid(x)1e−x1 是一个早期的激活函数 缺点是: 幂运算相对耗时&…...
ngx_http_index_set_index
定义在 src\http\modules\ngx_http_index_module.c static char * ngx_http_index_set_index(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) {ngx_http_index_loc_conf_t *ilcf conf;ngx_str_t *value;ngx_uint_t i, n;ngx_http_inde…...
怎样实现CAN数据的接收和发送?
在裸机环境下实现CAN数据的接收和发送,需要通过 硬件寄存器操作 或 HAL库函数 结合 手动实现的队列 来完成。以下是完整的接收和发送流程实现: 1. 硬件初始化 首先初始化CAN控制器和GPIO: void CAN_Init(void) {// 1. 使能CAN时钟__HAL_RCC…...
Linux笔记---动静态库(使用篇)
目录 1. 库的概念 2. 静态库(Static Libraries) 2.1 静态库的制作 2.2 静态库的使用 2.2.1 显式指定库文件及头文件路径 2.2.2 将库文件安装到系统目录 2.2.3 将头文件安装到系统目录 3. 动态库 3.1 动态库的制作 3.2 动态库的使用 3.2.1 显式…...
关于matlab和python谁快的问题
关于matlab和python谁快的问题,python比matlab在乘法上快10倍,指数计算快4倍,加减运算持平,略慢于matlab。或许matlab只适合求解特征值。 import torch import timen 50000 # 矩阵规模 M torch.rand(n, 31)start_time time.t…...
基于 ffmpeg 实现合并视频
ffmpeg是一个强大的多媒体处理工具,支持视频文件的合并。 列出目录下所有MP4文件 import os import glob# 当前目录 directory os.getcwd() directory "/directory/to/mp4/*"# 列出目录下所有MP4文件 files glob.glob(directory)# 排序 files.sort(…...
手机销售终端MPR+LTC项目项目总体方案P183(183页PPT)(文末有下载方式)
资料解读:手机销售终端 MPRLTC 项目项目总体方案 详细资料请看本解读文章的最后内容。在当今竞争激烈的市场环境下,企业的销售模式和流程对于其发展起着至关重要的作用。华为终端正处于销售模式转型的关键时期,波士顿 - 华为销售终端 MPRLTC …...
【Python LeetCode Patterns】刷力扣,15 个学习模式总结
1. 前缀和(Prefix Sum)—— 查询子数组中元素和303. 区域和检索 - 数组不可变304. 二维区域和检索 - 矩阵不可变 2. 双指针(Two Pointers)—— 移向彼此或远离彼此3. 滑动窗口(Sliding Window)—— 找到满足…...
蓝桥杯单片机刷题——串口发送显示
设计要求 通过串口接收字符控制数码管的显示,PC端发送字符A,数码管显示A,发送其它非法字符时,数码管显示E。 数码管显示格式如下: 备注: 单片机IRC振荡器频率设置为12MHz。 串口通信波特率:…...
