前端工程化——webpack、vue脚手架、Element-UI

目录

一.模块化相关规范

1.模块化概念介绍

2.Node.js babel 体验 ES6模块化

2.1 默认导出、默认导入(仅可使用一次)

2.2 按需导出、按需导入(可使用多次)

2.3 直接导入并执行模块代码

二.webpack

1.webpack 的基本使用

2.安装和配置 webpack

3.配置打包的入口与出口

4.配置 webpack 的自动打包功能

5.配置 html-webpack-plugin 生成预览页面

6.配置自动打包相关参数

7.webpack 中的加载器

7.1 打包处理 css 文件

7.2 打包处理 less 文件

7.3 打包处理 scss 文件

7.4 打包样式表中的图片和字体文件

7.5 打包处理 js 文件中的高级语法

三.Vue 单文件组件

1.单文本组件构成

2.webpack 中配置 vue 组件的加载器

3.在 webpack 项目中使用 vue

4.webpack 打包发布

四.Vue 脚手架

1.Vue 脚手架的基本用法

1.1 基于 交互式命令行,创建新版 vue项目: vue create my-project

1.2 基于 图形化界面 的方式,创建新版vue项目:vue ui

1.3 基于 2.x 的旧模板,创建旧版vue项目:  vue init webpack my-project

2.Vue 脚手架自定义配置

五.Element-UI 的基本使用

1. 基于命令行方式手动安装

2. 基于图形化界面自动安装


一.模块化相关规范

1.模块化概念介绍

  • 传统开发模式主要问题:命名冲突、文件依赖
  • 模块化:把单独功能封装在一个模块中,模块间相互隔离,通过特定接口公开内部成员,也可以依赖别的模块
  • 浏览器端模块化规范:AMD(require.js)、CMD(sea.js)
  • 服务器端模块化规范:CommonJS:
  1. 模块分为:单文件模块 / 包
  2. 模块成员导出:module.exports 和 exports
  3. 模块成员导入:require('模块标识符')
  • AMD、CMD、CommonJS 并不是 浏览器服务器 通用模块化标准
  • ES6模块化规范 是通用标准:
  1. 每个 js 文件都是独立模块
  2. 模块成员导入: import 关键字
  3. 模块成员导出: export 关键字

2.Node.js babel 体验 ES6模块化

  • babel 第三方模块:将 ES6代码 转为 ES5代码
  • 转码前:input.map(item => item + 1);
  • 转码后:input.map(function (item) { return item + 1;})
  1. npm install --save-dev @babel/core @babel/cli @babel/preset-env @babel/node
  2. npm install --save @babel/polyfill
  3. 项目跟目录创建文件 babel.config.js
  4. npx babel-node index.js 执行入口文件(npx:高级npm 自带的
  • 关于 babel.config.js:babel 运行前,会读取自己的配置文件,根据配置文件信息进行相关语法转换
  • presets:语法转换的数组,里面提供了语法转换时,用到的插件
const presets = [ // presets:语法转换的数组,里面提供了语法转换时,用到的插件
        [ '@babel/env', // 这个语法插件 在第一步有下载
            { targets: { // 目标浏览器
                    edge: '17',
                    firefox: '60',
                    chrome: '67',
                    safari: '11.1'
                }}]]
module.exports = { presets } // 导出{presets} 给 babel使用

2.1 默认导出、默认导入(仅可使用一次)

  • 默认导出语法 export default 默认导出的成员:export default {a,c,show}
  • 默认导入语法 import 接收名称 from '模块标识符':import m1 from './m1.js'

2.2 按需导出、按需导入(可使用多次)

  • 按需导出语法 export let s1 = 10:export let s2 = 'ccc' / export function say = function() {}
  • 按需导入语法 import { s1 } from '模块标识符':import { s1, s2 as ss2, say } from './m1.js'
  • 关于 as:给导出成员进行重命名
  • 结合使用默认及按需: import m1, { s1, s2 as ss2, say } from './m1.js'

2.3 直接导入并执行模块代码

  • 某个文件 只有单纯的 js代码,没有任何成员导出,也可以直接将此文件导入入口文件,进行执行

二.webpack

  • 当前 Web 开发面临困境:文件依赖关系复杂、静态资源请求效率低、模块化支持度不友好、浏览器对高级JS支持度低
  • webpack:一种前端项目构建(打包)工具,提供模块化支持、代码压缩混淆、处理JS兼容、性能优化等

1.webpack 的基本使用

  • 新建项目空白目录,运行 npm init –y 命令,初始化包管理配置文件 package.json
  • 新建 src 源代码目录新建 src -> index.html 首页,初始化首页基本的结构
  • 运行 npm install jquery –S 命令,安装 jQuery (高级语法,浏览器不支持,需要 webpack解析)
  • 通过模块化的形式,index.js 输出文件,index.html 引入前面的文件
  • index.js 中使用了高级ES6语法,浏览器不解析,会报错
  •  webpack 打包处理 index.js 生成新的名为 main.js文件(默认名字),不存在兼容性问题
  • 最终把 main.js 引入 index.html

2.安装和配置 webpack

  • npm install webpack webpack-cli –D 命令:安装 webpack 相关的包
  • 在项目根目录中,创建名为 webpack.config.js webpack 配置文件
  • webpack 的配置文件中,初始化:module.exports = { mode: 'development'  }
  • mode:指定构建模式:development(开发阶段)  production(项目发布阶段,代码会压缩)
  • package.json 配置文件中的 scripts 节点下,新增 dev,script 节点下的脚本,可以通过 npm run 执行
  • "scripts": {"dev": "webpack" } // npm run dev
  • 运行 npm run dev 命令,启动 webpack 进行项目打包

3.配置打包的入口与出口

  • 打包的 入口文件 为:src -> index.js
  • 打包的 输出文件 为:dist -> main.js
  • 修改打包的入口与出口,可以在 webpack.config.js 中新增如下配置信息:
  • const path = require('path') // 操作路径
  • module.exports = { entry: path.join(__dirname, './src/index.js'),  // 打包入口文件路径
  • output: path: path.join(__dirname, './dist'), // 打包输出文件路径
  • filename: 'bundle.js' // 重命名 输出文件的名称(改变默认的 main.js) }
  • src -> index.html 中, script 脚本的引用路径, 修改为 "/buldle.js“ (原来是 main.js)

4.配置 webpack 的自动打包功能

  • npm install webpack-dev-server –D 命令:安装支持项目自动打包的工具
  • 修改 package.json -> scripts 中的 dev 命令:
  • "scripts": {"dev": "webpack-dev-server"
  • 运行 npm run dev 命令,重新进行打包
  • 在浏览器中访问 http://localhost:8080 地址,查看自动打包效果
  • webpack-dev-server 会启动一个实时打包的 http 服务器
  • webpack-dev-server 打包生成的输出文件,默认放到根目录中,而且是虚拟的、看不见的
  •  /buldle.js 作为打包生成的,在根目录下,且不被人看到

5.配置 html-webpack-plugin 生成预览页面

  • npm install html-webpack-plugin –D 命令:安装生成预览页面的插件
  • 修改 webpack.config.js 文件 头部区域,添加如下配置信息:
  • const HtmlWebpackPlugin = require('html-webpack-plugin') // 导入生成预览页面的插件,得到 构造函数
  • const htmlPlugin = new HtmlWebpackPlugin({  // 创建插件的实例对象
  • template: './src/index.html', // 指定要用到的模板文件
  • filename: 'index.html' // 指定生成的文件的名称,该文件存在于内存中,在目录中不显示
  • 修改 webpack.config.js 文件中向外暴露的配置对象:
  • module.exports = { plugins: [ htmlPlugin ] } // plugins 数组是 webpack 打包期间的插件列表

6.配置自动打包相关参数

  • package.json 中配置自动打包:
  • "scripts": { "dev": "webpack-dev-server --open --host 127.0.0.1 --port 8888" },
  1. --open 打包完成后自动打开浏览器页面
  2. --host 配置 IP 地址
  3. --port 配置端口

7.webpack 中的加载器

  • webpack 默认只能打包 js模块,其他文件调用 loader 加载器 才可以打包,否则报错
  • loader 加载器 可以协助 webpack 打包处理特定的文件模块:
  1. less-loader 可以打包处理 .less 相关的文件
  2. sass-loader 可以打包处理 .scss 相关的文件
  3. url-loader 可以打包处理 css 中与 url 路径相关的文件
  • loader 调用过程:判断打包模块是否是 JS模块
  1. 如果是JS模块,检查是否包含高级JS,包含高级JS就用 babel协助打包,不包含就 webpack打包
  2. 如果不是JS模块,检查是否配置了对应的 loader,有就 loade 处理,没有就报错

7.1 打包处理 css 文件

  • npm i style-loader css-loader -D 命令:安装处理 css 文件的 loader
  • webpack.config.js module -> rules 数组中,添加 loader 规则如下:
  • { test: /\.css$/, use: ['style-loader', 'css-loader'] }
  • test :匹配的文件类型, use :对应要调用的 loader
  • use 数组中指定的 loader 顺序是固定的,多个 loader 的调用顺序是:从后往前调用
  • 配置 postCSS 自动添加 css 的兼容前缀:
  • npm i postcss-loader autoprefixer -D 命令
  • 在项目根目录中创建 postcss 的配置文件 postcss.config.js
  • const autoprefixer = require('autoprefixer') // 导入 自动添加前缀的插件
  • module.exports = {  plugins: [ autoprefixer ] } // 挂载插件
  • webpack.config.js module -> rules 数组中,添加 loader 规则如下:
  • { test :/ \.css$ /, use : ['style-loader', 'css-loader', ' postcss-loader '] }

7.2 打包处理 less 文件

  • npm i less-loader less -D 命令
  • webpack.config.js module -> rules 数组中,添加 loader 规则如下:
  • { test: /\.less$/, use: ['style-loader', 'css-loader', 'less-loader'] }

7.3 打包处理 scss 文件

  • npm i sass-loader node-sass -D 命令
  • webpack.config.js module -> rules 数组中,添加 loader 规则如下:
  • { test: /\.scss$/, use: ['style-loader', 'css-loader', 'sass-loader'] }
  • 注意这里是 scss 文件,但是对应的 loader 写法是 sass

7.4 打包样式表中的图片和字体文件

  • npm i url-loader file-loader -D 命令
  • webpack.config.js module -> rules 数组中,添加 loader 规则如下:
  • { test : /\.jpg|png|gif|bmp|ttf|eot|svg|woff|woff2$/, use : ' url-loader ?limit=16940' }
  • ? 之后的是 loader 的  参数项
  • limit 用来指定图片的大小,单位是字节 (byte), 只有小于 limit 大小的图片,才会被转为 base64 图片

7.5 打包处理 js 文件中的高级语法

  • 安装 babel转换器 相关的包:npm i babel-loader @babel/core @babel/runtime -D
  • 安装 babel语法插件 相关的包:npm i @babel/preset-env @babel/plugin-transform-runtime @babel/plugin-proposal-class-properties –D
  • 在项目根目录中,创建 babel 配置文件 babel.config.js 并初始化:
 module.exports = {
 presets: [ '@babel/preset-env' ],
 plugins: [ '@babel/plugin-transform-runtime', '@babel/plugin-proposalclass-properties’ ]}
  • webpack.config.js module -> rules 数组中,添加 loader 规则如下:
  • { test: /\.js$/, use: 'babel-loader', exclude: /node_modules/ }
  • exclude 为排除项,表示 babel-loader 不需要处理 node_modules 中的 js 文件

三.Vue 单文件组件

1.单文本组件构成

  • 传统组件的问题:
  1. 全局定义的组件必须保证 组件名不重复
  2. 字符串模板缺乏语法高亮,在 HTML 有多行的时候,需要用到丑陋的 \
  3. 当 HTML/JS 被组件化时,CSS 被排除
  • 解决方案:使用 Vue 单文件组件
  • 单文件组件的组成结构:
  1. template 组件的模板区域
  2. script 业务逻辑区域
  3. style 样式区域
 <template>
 <!-- 这里用于定义Vue组件的模板内容 -->
 </template>
 <script>
 // 这里用于定义Vue组件的业务逻辑
 export default {
 data: () { return {} }, // 私有数据
 methods: {} // 处理函数
 // ... 其它业务逻辑
 }
 </script>
 <style scoped>
 /* 这里用于定义组件的样式 */
 </style>

2.webpack 中配置 vue 组件的加载器

  • npm i vue-loader vue-template-compiler -D 命令
  • webpack.config.js 配置文件中,添加 vue-loader 的配置项如下:
  1. const VueLoaderPlugin = require('vue-loader/lib/plugin')  // 声明插件
  2. { test: /\.vue$/, loader: 'vue-loader' }
  3. plugins: [ // ... 其它插件  new VueLoaderPlugin() ] // 请确保引入这个插件!

3.在 webpack 项目中使用 vue

  • npm i vue –S 安装 vue
  • 新建 components文件夹,新建APP.vue
  • src -> index.js 入口文件中:
  • import Vue from 'vue' // 导入 vue构造函数
  • import App from './components/App.vue' // 导入 APP根组件
  • const vm = new Vue({ el: '#app',render: h => h(App)})  // 创建 vue 的实例对象,并指定要控制的 el 区域
  • 通过 render函数 渲染 App根组件
  • 因为在 wabpack里面使用 vue 是不支持很多语法的,比如 component 等等,所以用 render()渲染

4.webpack 打包发布

  • 上线之前通过 webpack 将应用进行整体打包,通过 package.json 文件配置打包命令:
  • 该命令默认加载项目根目录中的 webpack.config.js 配置文件
 "scripts": {
 // 用于打包的命令
 "build": "webpack -p",
 // 用于开发调试的命令
 "dev": "webpack-dev-server --open --host 127.0.0.1 --port 3000",
 },
  • webpack 打包目录结构:

四.Vue 脚手架

1.Vue 脚手架的基本用法

  • Vue 脚手架:快速生成 Vue 项目基础架构
  • 安装 3.x 版本的 Vue 脚手架: npm install -g @vue/cli
  • 查看版本号:vue -v

1.1 基于 交互式命令行,创建新版 vue项目: vue create my-project

  • 项目名称不可以有大写字母:// Warning: name can no longer contain capital letters
  • Vue CLI v4.4.4(上下箭头操控选项)
    ? Please pick a preset:
      default (babel, eslint)    // 默认方式创建
    > Manually select features   // 手动方式创建(推荐)
  • Vue CLI v4.4.4(上下箭头操控选项,空格代表选中选项)
    ? Please pick a preset: Manually select features
    ? Check the features needed for your project:
     (*) Babel
     ( ) TypeScript
     ( ) Progressive Web App (PWA) Support
    >(*) Router
     ( ) Vuex
     ( ) CSS Pre-processors
     (*) Linter / Formatter
     ( ) Unit Testing
     ( ) E2E Testing
  • Vue CLI v4.4.4
    ? Please pick a preset: Manually select features
    ? Check the features needed for your project: Babel, Router, Linter
    ? Use history mode for router? (Requires proper server setup for index fallback in production) (Y/n) // 是否安装历史模式的路由,一般选择n
  •  $ cd myproject // 到项目根目录下
     $ npm run serve // 把项目运行起来
  • $ npm run serve // 把项目运行起来
  • $ npm run serve // 把项目运行起来
  •   App running at:
      - Local:   http://localhost:8080/ // 去浏览器中打开这个网址,就是项目了
      - Network: http://10.195.149.241:8080/

      Note that the development build is not optimized.
      To create a production build, run npm run build.

1.2 基于 图形化界面 的方式,创建新版vue项目:vue ui

1.3 基于 2.x 的旧模板,创建旧版vue项目:  vue init webpack my-project

  • npm install -g @vue/cli-init ,旧模板必须下载左边的东西

2.Vue 脚手架自定义配置

  • 在项目的根目录下,创建配置文件:vue.config.js
 module.exports = {
 devServer: {
 open: true, // 自动打开浏览器
 port: 8888 // 更改端口号
 }}
  • package.json 主要用来管理包的配置信息,但是也可以配置 vue脚手架相关信息(非常不推荐)
 "vue": { // 在 package.json 最底部添加,记得,
 "devServer": {  // 打包期间服务器设置
 "port": "8888", // 端口号
 "open" : true // 打包成功后自动启动浏览器
 }}

 

五.Element-UI 的基本使用

  • Element-UI:基于 Vue2.0的 桌面端组件库

1. 基于命令行方式手动安装

  • 安装依赖包:npm i element-ui –S
  • 导入 Element-UI 相关资源(导入入口文件 main.js)
  1. import ElementUI from 'element-ui';  // 导入组件库
  2. import 'element-ui/lib/theme-chalk/index.css';  // 导入组件相关样式
  3. Vue.use(ElementUI);  // 配置 Vue 插件
  • 回到 App.vue 文件中,粘贴自己需要的组件

2. 基于图形化界面自动安装

  1. 运行 vue ui 命令,打开图形化界面
  2. 通过 Vue 项目管理器,进入具体的项目配置面板
  3. 点击 插件 -> 添加插件,进入插件查询面板
  4. 搜索 vue-cli-plugin-element 并安装
  5. 配置插件,按需导入,从而减少打包后项目的体积
  6. 在 vscode中打开项目,回到 App.vue 文件中,粘贴自己需要的组件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lyrelion

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值