一套完整的vue项目开发环境

不管是工作需要还是面试加分,vue技术栈已经成为了前端开发工程师必备的技术点。接下来,我将从零开发一套完整的vue项目开发环境,提供给需要的同行小伙伴观看也方便自己以后复习。

 

blockchain

最美的自己

 

仓库地址

项目源码地址:github.com/tangmengche…

目标

彻底 Vue 官方脚手架 Cli 帮我们初始化做了那些事,通过 webpack4.x 帮我们完成了哪些常见功能:

  1. ES6/7/8/9等高级语法转换成ES5
  2. stylus/less/scss等css预处理器转换成css
  3. 解析字体font、图片(jpg、png...)等静态资源
  4. 压缩js、css等文件
  5. 自动添加css各大浏览器厂商前缀
  6. 定义环境变量
  7. 抽离公共代码
  8. 项目热更新和懒加载
  9. 区别生产环境和开发环境
  10. 每次打包删除上一次打包记录
  11. ...

项目初始化

  1. 检查 node 环境配置

先本地全局安装node环境,vue的运行是依赖于nodenpm的管理工具来实现的,node下载地址。下载好node之后,打开cmd管理工具,输入node -v,回车,查看node版本号,出现版本号则说明安装成功

 
  1. node -v npm -v

  2. 复制代码

 

效果图

版本号

 

  1. 初始化项目目录

在命令行依次输入:

 
  1. mkdir my-vue-cli 新建项目目录

  2. cd my-vue-cli/ 切换到项目目录

  3. npm init 生成项目的一些信息,最终会生成一个package.json文件。注意:可以输入npm init -y可以不用按回车

  4. 复制代码

 

效果图

操作效果图

 

  1. 安装 webpack

webpack 是一个模块打包机,自动分析项目依赖的模块以及一些浏览器不能直接转换的高级语法等转换成浏览器可以解析的 js、css文件等。在项目根目录本地安装webpack, 本项目将使用webpack4.x版本

 
  1. npm install webpack webpack-cli -D

  2. 复制代码

 

效果图

安装效果图

 

  1. 初始化项目目录和文件

在项目根目录新建一下文件:

 
  1. src: 存放项目源码的目录

  2. index.js: 需要被 webpack 编译的文件

  3. build:存放项目的 webpack 配置文件

  4. webpack.config.js 项目的webpack核心配置文件

  5. index.html: 项目打包后自动将打包的文件添加在该文件里面

  6. 复制代码

 

效果图

目录效果图

 

  • 添加webpack配置文件的基本信息
  1. mode: 模式, development开发环境、production生产环境
  2. entry: 项目的打包的入口文件
  3. output: 项目的打包后输出文件
  4. module: 模块, 在webpack中所有文件皆模块, 解析css、js、图片以及字体图标等
  5. plugins: 插件, 用来扩展webpack功能
  6. ...
  • 在package.json文件 scripts 属性中添加 运行 npm run build 即可打包
 
  1. "build": "webpack --config ./build/webpack.config.js"

  2. 复制代码

  • 在index.js中添加测试代码验证webpack打包是否正确
 
  1. function sum(a, b) {

  2. return a + b;

  3. }

  4. var sum = sum(1, 2)

  5. console.log(sum)

  6. 复制代码

如果项目dist目录生成了一个bundle.js文件,说明webpack打包正确.

效果图

测试效果图

 

配置核心功能

  1. ES6/7/8/9等高级语法转换成ES5
  • 在index.js中添加ES6/7/8等高级语法的代码测试代码验证webpack是否能将其转换为ES5等让浏览器能够解析的低级语法
  1. 安装相关依赖
 
  1. npm install babel-loader @babel/core @babel/preset-env -D

  2.  
  3. babel-loader是将ES6等高级语法转换为能让浏览器能够解析的低级语法

  4. @babel/core是babel的核心模块,编译器。提供转换的API

  5. @babel/preset-env 可以根据配置的目标浏览器或者运行环境来自动将ES2015+的代码转换为es5

  6. 复制代码

  1. 修改核心配置文件webpack.config.js效果图

    修改效果图

    然后运行npm run build,就可以看到我们输入的ES6+等高级语法被转换为ES5了。注意:babel-loader只会将 ES6/7/8等高级语法转换为ES5语法,但是对新api并不会转换。比如Promise、Iterator、Set、Proxy、Symbol等全局对象,以及一些定义在全局对象上的方法(比如Object.assign)都不会转码。此时,我们必须使用babel-polyfill,为当前环境提供一个垫片。
 
  1. npm install @babel/polyfill -S

  2.  
  3. babel-polyfill是解决babel-loader不能对新的api进行转换为当前环境添加一个垫片

  4. 复制代码

重点:当我们执行打包后,打包的文件里含有大量的重复代码,那么我们需要提供统一的模块化的helper来减少这些helper函数的重复输出。

 
  1. npm install @babel/runtime @babel/plugin-transform-runtime -D

  2.  
  3. @babel/runtime就是提供统一的模块化的helper, 使用能大大减少打包编译后的体积

  4. @babel/plugin-transform-runtime它会帮我自动动态require @babel/runtime中的内容

  5. 注意:还有一些常见的babel:

  6. @babel/plugin-proposal-decorators将es6+中更高级的特性转化---装饰器

  7. @babel/plugin-proposal-class-properties将es6中更高级的API进行转化---类

  8. 复制代码

 

效果图

修改效果图

3. 在index.js中编写ES6+等高级语法

 

 
  1. let fn = () => {

  2. console.log('箭头函数')

  3. }

  4. fn()

  5.  
  6. let promise = new Promise((resolve, reject) => {

  7. setTimeout(() => {

  8. resolve(123)

  9. }, 1000)

  10. })

  11. promise.then(res => {

  12. console.log(res);

  13. })

  14. 复制代码

 

效果图

代码运行效果图

 

  1. stylus/less/scss等css预处理器转换成css
  • 在项目src目录中添加index.less文件,并在index.js文件中引入其文件

以下就以less预处理器为例,详细介绍下其用法,其余两种类似:

  1. 安装相关依赖
 
  1. npm install stylus stylus-loader less less-loader sass-loader node-sass css-loader style-loader -D

  2.  
  3. css-loader主要的作用是解析css文件, 像@import等动态语法

  4. style-loader主要的作用是解析的css文件渲染到html的style标签内

  5. stylus、less、sass是CSS的常见预处理器

  6. stylus-loader、less-loader、sass-loader主要是将其对应的语法转换成css语法

  7. 复制代码

  1. 修改核心配置文件webpack.config.js效果图

    修改配置效果图

  2. 添加index.less文件
 
  1. @color: red;

  2. #div1 {

  3. color: @color;

  4. font-size: 36px;

  5. }

  6. 复制代码

 

效果图

打包效果图

注意:CSS3 的许多特性来说,需要添加各种浏览器兼容前缀,开发过程中,这样加太麻烦,postcss 帮你自动添加各种浏览器前缀

 

 
  1. npm install postcss-loader autoprefixer -D

  2.  
  3. postcss-loader autoprefixer 处理浏览器兼容,自动为CSS3的某些属性添加前缀

  4. 复制代码

 

效果图

修改配置效果图

 

  1. 解析字体font、图片(jpg、png...)等静态资源
  • 项目中通常会使用图片、字体等静态资源,不使用对应的loader项目会报错
  1. 安装相关依赖
 
  1. npm install file-loader url-loader -D

  2.  
  3. file-loader可以用来帮助webpack打包处理一系列的图片文件;比如:.png 、 .jpg 、.jepg等格式的图片。打包的图片会给每张图片都生成一个随机的hash值作为图片的名字

  4. url-loader封装了file-loader,它的工作原理:1.文件大小小于limit参数,url-loader将会把文件转为Base64;2.文件大小大于limit,url-loader会调用file-loader进行处理,参数也会直接传给file-loader

  5. 复制代码

  1. 修改核心配置文件webpack.config.js效果图

    修改配置效果图

  1. 压缩打包后的js、css
  • 由于项目打包后会生成很多js文件,代码之间有很多空格、引号等,如果我们将其去掉,这样会大大减少打包的体积
  1. 安装相关依赖
 
  1. npm install mini-css-extract-plugin -D

  2. // or 或

  3. npm install extract-text-webpack-plugin@next -D // 不推荐使用

  4. npm install optimize-css-assets-webpack-plugin -D

  5. npm install uglifyjs-webpack-plugin -D

  6. // 扩展 消除未使用的css

  7. npm install purify-webpack purify-css -D

  8. 复制代码

注意:在生产模式下,webpack自动将JS进行压缩。MiniCssExtractPlugin 推荐只用于生产环境,因为该插件在开发环境下会导致HMR功能缺失,所以日常开发中,还是用style-loader。 2. 修改核心配置文件webpack.config.js

效果图

修改配置效果图

 

  1. 常用选项以及插件的使用方法
  • 大家都习惯的Ctrl+S保存代码后就想浏览器自动刷新来更新我们的页面
  1. 安装相关依赖
 
  1. npm install webpack-dev-server -D

  2. 复制代码

  1. 修改核心配置文件webpack.config.js效果图

    修改配置效果图

  • 通过html-webpack-plugin插件来创建html文件,并自动引入打包后的js文件
  1. 安装相关依赖
 
  1. npm install html-webpack-plugin -D

  2.  
  3. html-webpack-plugin主要有两个作用: 1、为html文件中引入的外部资源如script、link动态添加每次compile后的hash,防止引用缓存的外部文件问题。2、可以生成创建html入口文件

  4. 复制代码

  1. 在项目根目录新建index.html文件
 
  1. <!DOCTYPE html>

  2. <html lang="en">

  3. <head>

  4. <meta charset="UTF-8">

  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">

  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">

  7. <title>Document</title>

  8. </head>

  9. <body>

  10.  
  11. </body>

  12. </html>

  13. 复制代码

  1. 修改核心配置文件webpack.config.js效果图

    修改配置效果图

  • 通过clean-webpack-plugin插件来自动删除上一次打包的文件
  1. 安装相关依赖
 
  1. npm install clean-webpack-plugin -D

  2.  
  3. clean-webpack-plugin是删除webpack打包后的文件夹以及文件

  4. 复制代码

  1. 修改核心配置文件webpack.config.js效果图

    修改配置效果图

webpack识别.vue文件

目前绝大多数的vue项目里核心业务代码都是.vue文件结尾的,但浏览器不支持对.vue文件的解析,故需webpack将.vue文件转换为浏览器能识别的js文件。

  1. 安装相关依赖
 
  1. npm install vue-loader vue-template-compiler cache-loader thread-loader -D

  2. npm install vue -S

  3.  
  4. vue-loader 作用解析.vue文件

  5. vue-template-compiler 作用编译模板

  6. cache-loader 作用缓存loader编译的结果

  7. thread-loader 作用使用 worker 池来运行loader,每个 worker 都是一个 node.js 进程

  8. vue 一个用于构建用户界面渐进式的MVVM框架

  9. 复制代码

  1. 修改核心配置文件webpack.config.js

    效果图

    修改配置效果图

     

  2. 在项目根目录新建App.vue文件

 
  1. <template>

  2. <div>

  3. 测试123

  4. </div>

  5. </template>

  6. <script>

  7. export default {

  8.  
  9. }

  10. </script>

  11. 复制代码

  1. 修改index.js
 
  1. import Vue from 'vue';

  2. import App from './App.vue';

  3.  
  4. new Vue({

  5. render: h => h(App)

  6. }).$mount('#app')

  7. 复制代码

通过以上操作后执行npm run build,则可以看到webpack将.vue文件解析为浏览器可以识别的js语法。也可以通过运行npm run dev看到浏览器页面上会渲染出123。

Vue集成VueRouter和Vuex

  1. 安装相关依赖
 
  1. npm install vue-router vuex -S

  2.  
  3. vue-router是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌

  4. vuex是一个专为 Vue.js 应用程序开发的状态管理模式

  5. 复制代码

  1. 集成vue-router
  • 新建Home.vue和About.vue两个组件
 
  1. // Home.vue

  2. <template>

  3. <div>

  4. home1231

  5. </div>

  6. </template>

  7. <script>

  8. export default {

  9. name: 'Home'

  10. }

  11. </script>

  12. <style lang="scss" scoped>

  13. </style>

  14. 复制代码

 
  1. // About.vue

  2. <template>

  3. <div>

  4. about

  5. </div>

  6. </template>

  7. <script>

  8. export default {

  9. name: 'About'

  10. }

  11. </script>

  12. <style lang="scss" scoped>

  13. </style>

  14. 复制代码

  • 新增路由的配置文件 在项目的src目录里,新建/src/router/index.js。注意:在加载路由时,可以使用路由懒加载的方式进行加载组件
 
  1. import Vue from 'vue';

  2. import VueRouter from 'vue-router';

  3. // import Home from '../views/Home.vue';

  4. // import About from '../views/About.vue';

  5. Vue.use(VueRouter); // 向Vue再注册路由

  6. export default new VueRouter({

  7. mode: 'hash',

  8. routes: [

  9. {

  10. path: '/Home',

  11. name: 'Home',

  12. // component: Home

  13. component: () => import(/* webpackChunkName: "Home" */ '../views/Home.vue') // 路由懒加载方式

  14. },

  15. {

  16. path: '/about',

  17. name: 'About',

  18. // component: About

  19. component: () => import(/* webpackChunkName: 'About' */ '../views/About.vue')

  20. },

  21. {

  22. path: '*', // 匹配任何路由

  23. redirect: '/Home'

  24. }

  25. ]

  26. })

  27. 复制代码

  • 修改index.js文件
 
  1. import Vue from 'vue'

  2. import App from './App.vue'

  3. import router from './router'

  4.  
  5. new Vue({

  6. router, // 新增

  7. render: h => h(App)

  8. }).$mount('#app')

  9. 复制代码

扩展

  • 引入Element UI
  • 添加管理系统常见的布局(左右布局+上面导航)
  • ...

最后


转载:https://juejin.im/post/5e0cba76f265da5d4e27480c

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值