【vue基础】一些工具模块

文章目录

    • 一、npm
    • 二、less
    • 三、webpack的基本使用
      • 1. 概念
      • 2. 主要功能
      • 3. 安装
      • 4. 使用
        • 补充:mode 的可选值
      • 5. webpack配置
        • (1)webpack.config.js 文件的作用
        • (2)webpack中的默认约定
      • 6.webpack的插件
        • (1)安装webpack-dev-server
        • (2)安装html-webpack-plugin
        • (3)devServer节点
      • 7.webpack中的loader
        • (1)打包处理css文件
        • (2)打包处理less文件
        • (3)配置加载图片的loader
        • (4)打包处理js文件中的高级语法
      • 8. 打包发布
        • (1)配置webpack的打包发布
        • (3)把javaScript文件统一生成到js目录中
        • (4)把图片文件统一生成到image目录中
        • (5)自动清理dist目录下的旧文件
        • (6)Source Map
      • 9.补充

一、npm

  1. 介绍:node package manager 包管理工具
    NPM是随同NodeJS(最多使用场景是前端构建工具)一起安装的包管理工具 实现:包的下载和管理依赖的
    官网下载:node.js
  2. 安装:cnpm安装淘宝的镜像 国内提高下载速度
    安装cnpm,执行命令行
npm install -g cnpm --registry=https://registry.npm.taobao.org

cnpm跟npm用法完全一致,只是在执行命令时将npm改为cnpm
使用cnpm时出错,爆红解决
【vue基础】一些工具模块_第1张图片
3. npm使用命令:NPM使用介绍

  • 下载:npm install 模块名字@xx.xx --global/ --save / --save-dev --force
    • install下载模块名称 简称 npm i 模块
    • 模块名字@xx.xx 限制下载的模块的版本 比如下载jquery: npm i [email protected]
    • --global 全局安装 简写:npm i 模块 -g
    • npm i 模块名字 安装到本地项目的依赖中:node_modules
    • npm i模块 --save(-S) 安装模块到package.json文件中 dependencies:{} 模块:开发环境 线上环境都有
      npm i swiper echarts -S
      
    • npm i 模块 --save-dev(-D) 安装模块到package.json文件中 -devDependencies 只有开发环境有,生产环境没有
      npm i sass --save-dev
      
    • npm install 下载当前项目依赖
  • 卸载模块
    • npm uninstall 模块名字@xx.xx
    • npm uninstall 模块名字 -g/-S/--save-dev
  • 更新
    • 重新安装:npm i 模块 -S --force 强制安装 替换之前的模块
    • 更新: npm update 模块名字 -S/--save-dev
  • 下多个模块
    • npm i swiper echarts express -S
    • not font module express 少包了

二、less

是css的预处理语言。将css赋予了动态语言的特性,如变量,继承,运算,函数

  1. 安装less命令行工具
    全局安装: npm install less -g  
    项目依赖: npm install less -save
    
  2. 使用命令行工具编译less文件
    编译在命令行窗口: less xx.less
    输出编译之后的css代码到文件: less xx.less xx.css
    
  3. 语法:less语法

三、webpack的基本使用

1. 概念

前端项目工程化的具体解决方案

2. 主要功能

它提供了友好的前端模块化开发支持,以及代码压缩混淆处理浏览器js的兼容性性能优化等强大的功能。

3. 安装

npm i [email protected] [email protected] -D

-D 是 --save-dev的简写
-S 是 --save的简写

4. 使用

  1. 新建项目空白目录,并运行npm init -y命令,初始化包管理配置文件package.json
    【vue基础】一些工具模块_第2张图片

  2. 新建src源代码目录,创建index.html并初始化和index.js
    【vue基础】一些工具模块_第3张图片

  3. 运行npm install jquery -S命令,安装jQuery
    【vue基础】一些工具模块_第4张图片

  4. 通过ES6模块化的方式导入jquery,实现列表隔行变色效果
    【vue基础】一些工具模块_第5张图片

  5. 在项目中安装webpack

    npm install [email protected] [email protected] -D
    
  6. 在项目中配置webpack
    ① 在项目更目录中,创建名为webpack.config.js的webpack配置文件,并初始化如下的基本配置:

    module.exports = {
    	mode: "development", //mode 用来指定构建模式,可选值有development(开发)和production(运行)
    };	
    

    ② 在package.json的script节点下,新增dev脚本如下:

    "scripts": {
     "dev": "webpack"  //script节点下的脚本,可以通过npm run 执行。例如npm run dev
    },
    

    ③ 在终端中运行npm run dev命令启动webpack进行项目的打包构建
    【vue基础】一些工具模块_第6张图片
    7.最终效果
    【vue基础】一些工具模块_第7张图片

补充:mode 的可选值

mode节点的可选值有两个:
1. development
开发环境
不会对打包生成的文件进行代码压缩和性能优化
③打包速度快,适合在开发阶段使用
2. production
生产环境
对打包生成的文件进行代码压缩和性能优化
③打包速度很慢,适合在发布阶段使用

5. webpack配置

(1)webpack.config.js 文件的作用

webpack.config.js是webpack的配置文件。webpack在真正开始打包构建之间,会先读取这个配置文件,从而基于给定的配置,对项目进行打包。

注意:由于webpack是基于node。js开发出来的打包工具,因此在它的配置文件中,支持使用node.js相关的语法和模块进行webpack的个性化配置

(2)webpack中的默认约定

在webpack 4.x 和 5.x 的版本中,有如下的默认约定:
① 默认的打包入口文件为src ->index.js
② 默认的输出文件路径为dist -> main.js

注意: 可以在webpack.config.js中修改打包的默认约定

在webpack.config.js配置文件中,通过entry节点指定打包的入口。通过output节点指定打包的出口。

const path = require('path') //导入node.js 中专门操作路径的模块
module.exports = {
	mode: "development", //mode 用来指定构建模式,可选值有development(开发)和production(运行)
};

module.exports = {
	entry: path.join(__dirname,'./src/index.js'), //打包入口文件的路径
	output: {
		path: path.join(__dirname, './dist'), //输出文件的存放路径
		filename: 'bundle.js' //输出文件的名称
	}
}

6.webpack的插件

通过安装和配置第三方的插件,可以拓展webpack的能力,从而让webpack用起来更方便。最常用的webpack插件有:

webpack-dev-server

  • 类似于node.js阶段用到的nodemon工具
  • 每当修改了源代码,webpack会自动进行项目的打包和构建

html-webpack-plugin

  • webpack中的HTML插件(类似于一个模板引擎插件)
  • 可以通过此插件自定制indexhtml页面的内容。

(1)安装webpack-dev-server

  1. 运行如下命令,即可在项目中安装此插件:
npm install [email protected] -D
  1. 配置
    ① 修改package.json -> script 中的dev命令如下:
    "scripts": {
    	 "dev": "webpack serve"
    },
    
    ② 再次运行npm run dev 命令,重新进行项目的打包
    ③ 在浏览器中访问http://localhost:8080地址,实时查看自动打包效果

(2)安装html-webpack-plugin

  1. 运行如下命令,即可在项目中安装此插件:
npm install [email protected] -D
  1. 配置
    ① 修改package.json -> script 中的dev命令如下:
    const HtmlPlugin = require('html-webpack-plugin') //导入插件,得到插件的构造函数
    //new构造函数,创建插件的实例对象
    const htmlPlugin = new HtmlPlugin({
    	template: './src/index.html', //指定源文件的存放路径
    	filename: './index.html' //指定复制出来的文件名和存放路径
    })
    module.exports = {
    	mode: "development", //mode 用来指定构建模式,可选值有development(开发)和 production(运行)
    	plugins:[htmlPlugin], //插件的数组,将来webpack在运行时,会加载并调用这些插件
    }
    
  2. 解惑html-webpack-plugin
    ① 通过HTML插件复制到项目更目录中的index.html页面,也被放到了内存中
    ② HTML插件在生成的index.html页面,自动注入了打包的bundle.js文件

(3)devServer节点

在webpack.config.js配置文件中,可以通过devServer节点对webpack-dev-server插件进行更多的配置。示例代码如下:

devServer: {
	open: true, //初次打包完成后,自动打开浏览器
	host: '127.0.0.1', // 实时打包所使用的主机地址
	port: 80, // 实时打包所使用的端口号
}

在pathage.json中脚本添加--open chrome 指定用浏览器打开

7.webpack中的loader

在实际开发过程中,webpack默认只能打包处理以.js后缀结尾的模块。其他非.js后缀名结尾的模块,webpack默认处理不了,需要调用loader加载器才可以正常打包,否则报错。

loader加载器的作用:协助webpack打包处理特定的文件模块。比如

  • css-loader可以打包处理.css相关的文件
  • less-loader可以打包处理.less相关的文件
  • babel-loader可以打包处理webpack无法处理的高级JS语法
    【vue基础】一些工具模块_第8张图片

(1)打包处理css文件

① 运行npm i [email protected] [email protected] -D命令,安装处理css文件的loader
② 在webpack.config.js 的module -> rules数组中,添加loader规则如下:

module: { //所有第三方文件模块的匹配规则
	//文件后缀名的匹配规则
	rules: [{ test: /\.css$/, use: ["style-loader", "css-loader"] }]; 
}

其中,test表示匹配的文件类型,use表示对应要调用的loader
注意:

  • use数组中指定的loader 顺序是固定的
  • 多个loader的调用顺序是:从后往前调用
    【vue基础】一些工具模块_第9张图片

(2)打包处理less文件

① 运行npm i [email protected] [email protected] -D命令,安装处理less文件的loader
② 在webpack.config.js 的module -> rules数组中,添加loader规则如下:

module: { //所有第三方文件模块的匹配规则
	//文件后缀名的匹配规则
	rules: [{ test: /\.less$/, use: ["style-loader", "css-loader","less-loader"] }]; 
}

(3)配置加载图片的loader

① 运行npm i [email protected] [email protected] -D命令
② 在webpack.config.js 的module -> rules数组中,添加loader规则如下:

module: { //所有第三方文件模块的匹配规则
	//文件后缀名的匹配规则
	rules: [{ test: /\.jpg|png|gif$/, use: "url-loader?limit=2229" }]; 
}

其中?之后是loader的参数项:

  • limit用来指定图片的大小,单位是字节(byte)
  • 只有小于等于limit大小的图片,才会被转为base64格式的图片

(4)打包处理js文件中的高级语法

  1. webpack只能打包处理一部分高级的javaScript语法。对于那些webpack无法处理的高级js语法,需要借助于babel-loader进行打包处理。例如webpack无法处理下面的javaScript代码:
//定于了名为info的装饰器
function info(target) {
	// 为目标添加静态属性info
	target.ifon = "Person info";
}
// 为Person类应用info装饰器
@info
class Person {}
// 打印Person的静态属性info
console.log(Person.info);
  1. 安装babel-loader相关的包
    ① 运行npm i [email protected] @babel/[email protected] @babel/[email protected] -D命令
    ② 在webpack.config.js 的module -> rules数组中,添加loader规则如下:

    module: { //所有第三方文件模块的匹配规则
    	//文件后缀名的匹配规则
    	rules: [
    		// 注意:必须使用exclude指定排除项;因为node——modules目录下的第三方包不需要被打包
    		{ test: /\.js$/, use: "babel-loader", exclude: /node_modules/ },
    		]; 
    }
    
  2. 配置babel-loader
    在项目根目录下,创建名为babel.config.js的配置文件,定义Babel的配置项如下:

    //声明babel可用插件
    // 将来,webpack在调用babel-loder的时候,会先加载plugins插件来使用
    module.exports = {
    	plugins: [["@babel/plugin-proposal-decorators", { legacy: true }]],
    };
    

8. 打包发布

(1)配置webpack的打包发布

在package.json文件的script节点上,新增bulid命令如下:

 "scripts": {
    "dev": "webpack serve --open chrome",
    "build": "webpack --mode production"
  },

--model是一个参数项,用来指定webpack的运行模式。production代表生产环境,会对打包生成的文件进行代码压缩性能优化
注意:通过--model指定的参数项,会覆盖webpack.config.js中的model选项

(3)把javaScript文件统一生成到js目录中

webpack.config.js配置文件的output节点中,进行如下的配置:

output: {
	path: path.join(__dirname, "./dist"), //输出文件的存放路径
	filename: "js/index.js", //输出文件的名称
},

(4)把图片文件统一生成到image目录中

修改webpack.config.js中的url-loader配置项,新增outputPath选项即可指定图片文件的输出路径:

module: {
// 处理图片路径
// 在配置url-loader的时候,多个参数之间,使用&符号进行分隔
	{
		test: /\.(jpg|png|gif)$/,
		use: "url-loader?limit=470&outputPath=images",
	},			
}

(5)自动清理dist目录下的旧文件

为了在每次打包发布时自动清除dist目录中的旧文件,可以安装并配置clean-webpack-plugin插件:

  1. 安装清理dist目录中的webpack插件
    npm install --save-dev clean-webpack-plugin
    
  2. 配置
    //按需导入插件,得到插件的构造函数之后
    const { CleanWebpackPlugin } = require('clean-webpack-plugin');
    
    module.exports = {
    	plugins: [
    	//把创建的cleanPlugin插件实例对象,挂载到plugins节点上
       	 new CleanWebpackPlugin(),
    	],
    };
    

(6)Source Map

Source Map就是一个信息文件,里面储存着位置信息。也就是说,Source Map文件中存储着压缩混淆后的代码,所对应的转换前的位置

  1. 默认Source Map的问题。
    【vue基础】一些工具模块_第10张图片
    【vue基础】一些工具模块_第11张图片

  2. webpack生产环境下的Source Map
    【vue基础】一些工具模块_第12张图片
    【vue基础】一些工具模块_第13张图片

  3. Source Map的最佳实践
    【vue基础】一些工具模块_第14张图片

9.补充

在webpack.config.js中配置,使得@代替src路径

resolve: {
	alias: {
		// 告诉webpack,程序员写的代码中,@符号表示src着一层目录
		"@": path.join(__dirname, "./src"),
	},
},

【vue基础】一些工具模块_第15张图片

import msg from "@/msg.js";
console.log(msg.msg);

你可能感兴趣的:(vue.js,npm,前端)