青岛定制网站设计公司标书制作需要学多久

张小明 2026/1/9 11:48:40
青岛定制网站设计公司,标书制作需要学多久,德州网站建设维护,宁远县建设局网站一、上线前必懂#xff1a;为什么需要工程化优化#xff1f; 前九篇我们完成了Vue项目的开发#xff0c;实现了核心业务功能#xff0c;但“能跑的代码”不等于“能上线的代码”。职场中#xff0c;上线项目需要满足3个核心要求#xff1a;① 性能优异#xff08;首屏加…一、上线前必懂为什么需要工程化优化前九篇我们完成了Vue项目的开发实现了核心业务功能但“能跑的代码”不等于“能上线的代码”。职场中上线项目需要满足3个核心要求①性能优异首屏加载快、运行流畅②兼容稳定适配不同浏览器、设备③部署规范自动化流程、环境隔离。若直接将开发环境的代码上线会出现“首屏加载3秒”“IE浏览器报错”“生产环境泄露敏感信息”等问题严重影响用户体验和系统稳定性。工程化优化的核心价值以“用户体验”为核心通过技术手段降低加载时间、提升运行性能、保障兼容性同时通过规范部署流程降低上线风险——这是前端开发者从“初级”到“中级”的重要标志也是职场面试中“项目优化”类问题的高频考点。职场数据据统计首屏加载时间每增加1秒用户流失率提升7%超过3秒53%的用户会直接关闭页面。工程化优化能将首屏加载时间从3-5秒压缩至1秒内显著提升用户留存率。二、Day28性能优化——从“慢加载”到“秒开”Vue项目的性能优化主要围绕“减少资源体积”“优化加载顺序”“提升运行效率”三个维度展开以下是职场中最常用、最有效的优化方案附具体实现步骤。1. 资源压缩与Tree Shaking减少资源体积开发环境的代码包含大量冗余如注释、空格、未使用的代码通过压缩和Tree Shaking摇树优化可大幅减少资源体积提升加载速度。实战1Vite配置资源压缩Vite默认已集成基础压缩功能通过配置vite.config.js启用更全面的压缩JS、CSS、HTML// vite.config.js import { defineConfig } from vite; import vue from vitejs/plugin-vue; import { compression } from vite-plugin-compression; // 安装npm i vite-plugin-compression -D import { minifyHtml, injectHtml } from vite-plugin-html; // 安装npm i vite-plugin-html -D export default defineConfig({ plugins: [ vue(), // 1. 压缩HTML去除注释、空格注入环境变量 minifyHtml(), // 2. 生成.gz压缩文件需后端配合启用gzip解压 compression({ algorithm: gzip, // 压缩算法 threshold: 10240, // 超过10KB的文件才压缩 deleteOriginFile: false // 不删除原文件 }), // 3. 可选生成.br压缩文件比gzip压缩率更高兼容性稍差 compression({ algorithm: brotliCompress, threshold: 10240, deleteOriginFile: false, ext: .br }) ], // 4. 构建优化Tree ShakingVite默认启用无需额外配置 build: { // 压缩JS使用esbuild比terser更快 minify: esbuild, // 压缩CSS默认启用 cssCodeSplit: true, // 分割代码将第三方依赖如vue、pinia单独打包 rollupOptions: { output: { manualChunks: { // 第三方依赖单独打包成vendor.js vendor: [vue, vue-router, pinia], // 工具函数单独打包 utils: [axios] } } } } });关键优化解析Tree ShakingVite基于ES模块的import/export语法自动剔除未使用的代码如只导入import { ref } from vue则只打包ref相关代码需确保项目中无require语法CommonJS模块不支持Tree Shaking代码分割通过manualChunks将第三方依赖如vue、pinia与业务代码分离第三方依赖更新频率低可利用浏览器缓存减少重复加载压缩算法gzip兼容性好支持所有现代浏览器br压缩率更高比gzip小20%-30%但需后端配置Content-Encoding: br才能生效。2. 资源加载优化提升加载效率通过“懒加载”“预加载”“CDN引入”等方式优化资源加载顺序减少首屏加载压力。实战2路由懒加载与组件懒加载第九篇已实现路由懒加载此处补充组件懒加载针对大型组件如表格、图表template div h2用户管理/h2 button clickshowTable true stylemargin-bottom: 20px;显示大型表格/button LargeTable v-ifshowTable / /div /template script setup import { ref } from vue; // 组件懒加载使用import()动态导入打包时单独拆分 const LargeTable defineAsyncComponent(() import(../components/LargeTable.vue)); const showTable ref(false); /script实战3CDN引入第三方依赖减少打包体积将vue、vue-router等第三方依赖通过CDN引入无需打包到项目中减少包体积// vite.config.js export default defineConfig({ build: { rollupOptions: { external: [vue, vue-router, pinia], // 声明外部依赖不打包 output: { // 外部依赖通过CDN引入指定全局变量名 globals: { vue: Vue, vue-router: VueRouter, pinia: Pinia } } } } });在index.html中引入CDN资源推荐使用国内CDN如字节跳动静态资源库、七牛云!DOCTYPE html html langzh-CN head meta charsetUTF-8 link relicon typeimage/svgxml href/vite.svg meta nameviewport contentwidthdevice-width, initial-scale1.0 titleVue工程化项目/title link relstylesheet hrefhttps://lf6-cdn-tos.bytecdntp.com/cdn/expire-100-M/vue/3.3.4/vue.min.css script srchttps://lf6-cdn-tos.bytecdntp.com/cdn/expire-100-M/pinia/2.1.7/pinia.min.js/script script srchttps://lf6-cdn-tos.bytecdntp.com/cdn/expire-100-M/vue-router/4.2.5/vue-router.min.js/script script srchttps://lf6-cdn-tos.bytecdntp.com/cdn/expire-100-M/vue/3.3.4/vue.global.prod.js/script /head body div idapp/div script typemodule src/src/main.js/script /body /html3. 运行时优化提升页面流畅度针对Vue项目运行时的性能瓶颈如频繁DOM更新、大数据渲染提供针对性优化方案。实战4Vue渲染优化技巧template div v-memo[users.length, activeStatus] stylepadding: 20px; UserItem v-foruser in users :keyuser.id :useruser v-once / /div div v-foruser in activeUsers :keyuser.id{{ user.name }}/div RecycleScroller classscroller :itemsbigList :item-size50 key-fieldid template v-slot{ item } div classlist-item{{ item.name }}/div /template /RecycleScroller /template script setup import { ref, computed } from vue; import { RecycleScroller } from vue-virtual-scroller; // 安装npm i vue-virtual-scroller import vue-virtual-scroller/dist/vue-virtual-scroller.css; const users ref([...]); // 普通列表数据 const activeStatus ref(true); const bigList ref(new Array(10000).fill(0).map((_, i) ({ id: i, name: 用户${i} }))); // 1万条数据 // 2. 用computed过滤数据替代v-for中的v-if const activeUsers computed(() { return users.value.filter(user user.active); }); /script关键优化解析v-memo缓存元素或组件当依赖数组如[users.length, activeStatus]中的值不变时不触发重渲染适合列表、表单等频繁更新的场景虚拟滚动对于1万条以上的大数据列表只渲染“可视区域”内的元素如屏幕只显示20条就只渲染20条大幅减少DOM节点数量提升滚动流畅度避免v-for和v-if同层v-for优先级高于v-if同层使用时会先循环再判断浪费性能用computed提前过滤数据更高效。三、Day29兼容性处理与环境配置——保障“全场景可用”职场项目需要适配不同浏览器如Chrome、Firefox、IE11和设备PC、移动端同时需区分“开发环境”“测试环境”“生产环境”避免敏感信息泄露。1. 浏览器兼容性处理适配低版本浏览器Vue 3默认不支持IE11及以下浏览器需通过vitejs/plugin-legacy实现兼容性适配同时处理CSS兼容性。实战5Vite兼容性配置// vite.config.js import { defineConfig } from vite; import vue from vitejs/plugin-vue; import legacy from vitejs/plugin-legacy; // 安装npm i vitejs/plugin-legacy -D import autoprefixer from autoprefixer; // 安装npm i autoprefixer -D export default defineConfig({ plugins: [ vue(), // 1. 适配低版本浏览器IE11、旧版Chrome/Firefox legacy({ targets: [defaults, ie 11], // 目标浏览器 additionalLegacyPolyfills: [regenerator-runtime/runtime], // 额外的polyfill如async/await renderLegacyChunks: true, // 生成传统浏览器的chunk文件 polyfills: [ es.symbol, es.array.filter, es.promise, es.promise.finally, es.object.assign, es.array.includes, es.string.includes ] }) ], // 2. CSS兼容性处理自动添加前缀如-webkit-、-moz- css: { postcss: { plugins: [ autoprefixer({ // 适配目标浏览器可读取package.json中的browserslist overrideBrowserslist: [ defaults, ie 11, iOS 9, Android 5 ] }) ] } } });补充package.json中的browserslist配置统一兼容性目标{ browserslist: [ defaults, ie 11, iOS 9, Android 5 ] }兼容性注意事项Vue 3 IE11适配限制Vue 3的响应式系统使用了ES6的ProxyIE11不支持Proxyvitejs/plugin-legacy只能通过polyfill补全部分API但无法完全兼容响应式功能若需兼容IE11建议使用Vue 2CSS前缀autoprefixer会根据browserslist自动添加浏览器前缀如transform→-webkit-transform无需手动编写polyfill按需加载vitejs/plugin-legacy会根据目标浏览器自动注入所需的polyfill避免引入不必要的代码减少包体积。2. 多环境配置区分开发/测试/生产职场项目中不同环境的接口地址、密钥等配置不同需通过环境变量实现隔离避免生产环境泄露开发环境的敏感信息。实战6Vite多环境配置1创建环境变量文件项目根目录// .env.development开发环境默认加载 NODE_ENVdevelopment VITE_API_BASE_URLhttp://localhost:3000/api // 开发环境接口地址 VITE_APP_TITLEVue项目-开发环境 // .env.test测试环境 NODE_ENVtest VITE_API_BASE_URLhttp://test.example.com/api // 测试环境接口地址 VITE_APP_TITLEVue项目-测试环境 // .env.production生产环境 NODE_ENVproduction VITE_API_BASE_URLhttps://prod.example.com/api // 生产环境接口地址 VITE_APP_TITLEVue项目-生产环境 VITE_APP_ENABLE_LOGfalse // 生产环境关闭日志2在package.json中添加环境脚本{ scripts: { dev: vite, // 开发环境加载.env.development build:test: vite build --mode test, // 测试环境打包加载.env.test build:prod: vite build --mode production, // 生产环境打包加载.env.production preview: vite preview } }3在项目中使用环境变量// src/api/request.jsaxios请求封装 import axios from axios; const service axios.create({ // 使用环境变量中的接口地址 baseURL: import.meta.env.VITE_API_BASE_URL, timeout: 5000 }); // 生产环境关闭日志打印 if (import.meta.env.VITE_APP_ENABLE_LOG false) { console.log () {}; } export default service;template h1{{ appTitle }}/h1 /template script setup import { ref } from vue; // 在组件中使用环境变量 const appTitle ref(import.meta.env.VITE_APP_TITLE); /script环境配置注意事项环境变量前缀Vite中只有以VITE_开头的环境变量会被暴露给客户端非VITE_开头的变量如NODE_ENV仅在服务端生效敏感信息保护生产环境的密钥、Token等敏感信息不应存储在环境变量中应通过后端接口动态获取避免被打包到前端代码中模式与环境的区别--mode指定的是“模式”而非“环境”一个模式可对应多个环境变量文件如--mode test会加载.env.test和.env公共配置。四、Day30项目部署——从“本地”到“线上”项目优化完成后需部署到服务器供用户访问。职场中常用的部署方案有“静态资源部署Nginx”“云平台部署Vercel/Netlify”“容器化部署Docker”以下详细讲解操作流程。1. 静态资源部署Nginx最常用方案Vue项目打包后生成静态文件HTML、JS、CSS、图片可通过Nginx部署到服务器适合中小型项目。实战7Nginx部署步骤1打包项目生成静态文件# 生产环境打包加载.env.production npm run build:prod # 打包完成后生成dist目录包含所有静态文件 # dist/ # index.html # assets/ # vendor.js # ...2服务器安装Nginx以CentOS服务器为例# 安装Nginx yum install -y nginx # 启动Nginx systemctl start nginx # 设置开机自启 systemctl enable nginx # 验证Nginx是否启动成功访问服务器IP出现Nginx默认页面则成功 curl http://localhost3配置Nginx核心步骤编辑Nginx配置文件/etc/nginx/conf.d/default.confserver { listen 80; # 监听80端口HTTP server_name your-domain.com; # 你的域名如www.example.com无域名则填服务器IP # 静态资源根目录指向打包后的dist目录 root /usr/share/nginx/html/vue-project; index index.html; # 默认首页 # 配置跨域若前端和后端不在同一域名 location /api/ { proxy_pass http://prod.example.com/api/; # 后端接口地址 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } # 支持SPA单页面应用解决路由刷新404问题 location / { try_files $uri $uri/ /index.html; # 所有路由都指向index.html } # 启用gzip压缩配合前端gzip打包 gzip on; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xmlrss text/javascript; gzip_min_length 10k; gzip_comp_level 6; # 启用br压缩可选 brotli on; brotli_types text/plain text/css application/json application/javascript text/xml application/xml application/xmlrss text/javascript; brotli_min_length 10k; brotli_comp_level 6; # 静态资源缓存配置提升二次加载速度 location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|otf)$ { expires 30d; # 缓存30天 add_header Cache-Control public, max-age2592000; } }4上传静态文件到服务器使用scp或FTP工具将本地dist目录下的所有文件上传到服务器的/usr/share/nginx/html/vue-project目录# 本地终端执行上传dist目录下的所有文件 scp -r dist/* rootyour-server-ip:/usr/share/nginx/html/vue-project5重启Nginx生效配置# 检查Nginx配置是否正确 nginx -t # 重启Nginx systemctl restart nginxNginx部署常见问题路由刷新404单页面应用的路由是前端模拟的刷新页面时Nginx会找不到对应的文件需配置try_files $uri $uri/ /index.html静态资源访问403Nginx用户没有访问静态文件目录的权限执行chmod -R 755 /usr/share/nginx/html/vue-project赋予权限跨域问题若前端和后端不在同一域名需在Nginx中配置proxy_pass代理接口避免浏览器跨域限制。2. 云平台部署Vercel/Netlify快速部署方案对于个人项目或小型团队可使用Vercel、Netlify等云平台实现“一键部署”无需手动配置服务器。实战8Vercel部署步骤访问Vercel官网https://vercel.com/用GitHub账号登录点击“New Project”导入Vue项目的GitHub仓库Vercel会自动识别Vue项目无需手动配置构建命令默认使用npm run build输出目录为dist点击“Deploy”等待部署完成Vercel会生成一个临时域名如vue-project.vercel.app访问即可看到线上项目可选绑定自定义域名在Vercel项目的“Settings → Domains”中添加自己的域名按提示完成DNS解析配置。3. 容器化部署Docker企业级方案大型企业项目常用Docker容器化部署实现“环境一致性”“快速扩容”“自动化部署”以下是基础流程。实战9Docker部署步骤1创建Dockerfile项目根目录# 阶段1构建Vue项目 FROM node:16-alpine as build-stage WORKDIR /app # 复制package.json和package-lock.json COPY package*.json ./ # 安装依赖 RUN npm install # 复制项目文件 COPY . . # 生产环境打包 RUN npm run build:prod # 阶段2部署到Nginx FROM nginx:alpine as production-stage # 从构建阶段复制打包后的文件到Nginx静态目录 COPY --frombuild-stage /app/dist /usr/share/nginx/html # 复制自定义Nginx配置文件 COPY nginx.conf /etc/nginx/conf.d/default.conf # 暴露80端口 EXPOSE 80 # 启动Nginx CMD [nginx, -g, daemon off;]2创建自定义Nginx配置文件nginx.confserver { listen 80; server_name localhost; root /usr/share/nginx/html; index index.html; location / { try_files $uri $uri/ /index.html; } location /api/ { proxy_pass http://prod.example.com/api/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } gzip on; gzip_types text/plain text/css application/json application/javascript; }3构建并运行Docker容器# 1. 构建Docker镜像镜像名vue-project标签v1 docker build -t vue-project:v1 . # 2. 运行Docker容器端口映射主机80端口→容器80端口 docker run -d -p 80:80 --name vue-app vue-project:v1 # 3. 验证容器是否运行成功 docker ps # 4. 访问项目http://服务器IP curl http://localhostDocker部署优势环境一致性Docker容器包含项目运行所需的所有环境Node.js、Nginx避免“本地能跑线上跑不了”的问题快速扩容通过Docker Compose或Kubernetes可快速复制容器实现负载均衡隔离性强多个项目可部署在同一服务器容器之间相互隔离互不影响。五、3天总结工程化优化与部署职场能力清单性能优化掌握Vite的资源压缩、Tree Shaking、代码分割配置能实现路由/组件懒加载、虚拟滚动等渲染优化理解gzip/br压缩的原理和后端配置兼容性处理能通过vitejs/plugin-legacy和autoprefixer适配低版本浏览器理解browserslist的作用知道Vue 3的兼容性限制多环境配置能创建多环境变量文件在项目中使用import.meta.env访问环境变量区分开发/测试/生产环境的配置项目部署掌握Nginx部署的核心配置静态资源、路由刷新、跨域代理了解Vercel云平台的快速部署流程熟悉Docker容器化部署的基础步骤作业基于本文代码完成以下任务① 对自己的Vue项目进行全面性能优化使用Chrome DevTools的Lighthouse工具分析优化效果目标得分90② 配置多环境变量实现开发环境对接本地接口、生产环境对接线上接口③ 尝试用Nginx或Vercel部署项目实现公网访问。下一篇预告Day31-33 前端安全与性能监控——从“能用”到“安全可靠”对标职场“系统稳定性”需求
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

专业的深圳网站建设公司哪家好今天战争最新消息新闻

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

张小明 2026/1/8 20:58:50 网站建设

广州网站优化推荐网页制作基础教程直播

LobeChat 与神马搜索的移动端融合:打造“即搜即聊”的智能交互新范式 在移动互联网进入存量竞争的时代,用户对信息获取效率的要求已从“快”转向“准”和“懂我”。传统的关键词匹配式搜索虽然成熟,但在面对复杂意图、多轮追问或需要综合判断…

张小明 2026/1/8 20:58:48 网站建设

襄阳作风建设年活动网站wordpress主题制作

Mos完整教程:3分钟掌握Mac鼠标流畅滚动的终极秘诀 【免费下载链接】Mos 一个用于在 macOS 上平滑你的鼠标滚动效果或单独设置滚动方向的小工具, 让你的滚轮爽如触控板 | A lightweight tool used to smooth scrolling and set scroll direction independently for y…

张小明 2026/1/8 20:58:46 网站建设

微信设计网站建设网站建设 招标文件

ComfyUI用户也能上手!图形化界面爱好者必试HeyGem系统 在短视频内容爆炸式增长的今天,企业宣传、在线课程、品牌推广对高质量视频的需求与日俱增。然而,传统数字人制作流程不仅耗时耗力,还高度依赖专业剪辑师和高昂的人力成本。有…

张小明 2026/1/8 16:34:34 网站建设

男人不知本网站 枉做app软件制作教程

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

张小明 2026/1/8 8:49:23 网站建设

网站是怎么制作出来的怎么做 废旧回收网站

想要体验惊艳的实时人脸特效技术吗?Deep-Live-Cam作为一款强大的开源工具,能够通过单张图片实现实时面部特效和视频深度处理功能。无论你是想要制作有趣的视频内容,还是探索AI面部特效技术的边界,本指南都将为你提供完整的解决方案…

张小明 2026/1/8 22:20:13 网站建设