1.前端工程化


1.1 现代化前端编程

1.2 前端工程化

是指:在企业级的前端项目开发中,把前端开发所需的工具、技术、流程、经验等进行规范化、标准化。 企业中的Vue项目和React项目都是基于工程化的方式进行开发的。 优点:前端开发自成体系,有一套标准的开发方案和流程。

1.3 前端工程化的解决方案

目前主流的前端工程化解决方案:

2.webpack的基本使用


2.1 什么是webpack

概念:webpack是前端项目工程化的具体解决方案

主要功能:提供了友好的前端模块化开发支持,以及代码压缩混淆(减小体积)、处理浏览器端JavaScript的兼容性(将高级的代码转换成低级的没有兼容问题的代码,有对应不同版本的解决方案)、性能优化等强大的功能。

优点:让程序员把工作的重心放在具体功能的实现上,提高了前端开发效率和项目的可维护性。 *目前Vue, React等前端项目,基本上都是基于webpack进行工程化开发的。

2.2 在项目中安装webpack

在终端运行如下的命令,安装webpack相关的两个包:

npm install [email protected] [email protected] -D

2.3 在项目中配置webpack

(1) 在项目根目录中,创建名为webpack.config.js的webpack配置文件,并初始化如下的基本配置:

// 使用node.js中的导出语法,向外导出一个webpack的配置对象
module.exports = {
    // 代表webpack的运行模式,有 development 和 production
    mode: 'development'
}

production模式(需要重新运行脚本)会把文件压缩(webpack的功能之一) 。体积减小,打包时间增长

*开发阶段使用development 追求打包速度快;发布上线阶段使用production 追求打包体积小

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

"scripts": {
"dev": "webpack"
},
script节点下的脚本,可以通过 npm run 执行 例如 npm run dev
此时真正执行的命令是 "webpack"
在运行webpack之前,会先读取根目录下webpack.config.js这个配置文件,拿到配置文件中向外导出的配置选项mode

(3)在终端中运行 npm run dev 命令,启动webpack进行项目的打包构建

2.4 webpack的使用实践——创建列表隔行变色项目

Untitled

2.5 mode的可选值

1)development开发环境

不会对打包生成的文件进行代码压缩和性能优化;打包速度快,适合在开发阶段使用

2)production生产环境

会对打包生成的文件进行代码压缩和性能优化;打包速度很慢,仅适合在项目发布阶段使用

2.6 webpack.config.js文件的作用

是webpack的配置文件。webpack在真正开始打包构建之前,会读取这个配置文件(拿到向外导出的配置选项),从而基于给定的配置,对项目进行打包。 注意:由于webpack是基于node.js开发出来的打包工具,因此在它的配置文件中,支持使用node.js相关的语法和模块进行webpack的个性化配置。

2.7 webpack中的默认约定

在webpack 4.x和5.x的版本中有如下默认约定: (1)默认的入口打包文件为 src -> index.js (没有会报错) (2)默认的输出文件路径为 dist -> main.js 注意:可以在webpack.config.js中修改打包的默认约定

2.8 自定义打包的入口和出口

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

const path=require('path')//导入node.js中专门操作路径的模块
module.exports = {
    entry:path.join(__dirname,'./src/index.js'),//打包入口文件的路径
    output:{
        path:path.join(__dirname,'./dist'),//输出文件的存放路径
        filename:'bundle.js'//输出文件的名称
    }
}

__dirname代表当前文件的存放路径

<!-- <script src="./index.js"></script> -->
    <!-- <script src="../dist/main.js"></script> -->
    <script src="../dist/bundle.js"></script>

每次修改index.js需要重新npm run dev进行打包,页面才能展示修改后的内容,很麻烦,下面使用插件来解决

一、Node.js基础与内置模块

1.fs文件系统模块

fs模块是Node.js官方提供的、用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作需求。

如果要在JavaScript中使用fs模块需要先导入它:

const fs = require('fs')

1.1 fs.readFile()

1.1.1 格式

使用fs..readFile()方法,可以读取指定文件中的内容:

fs.readFile(path[, options], callback)

1.1.2 示例代码

以utf8的编码格式,读取指定文件的内容,并打印err和dataStr的值:

const fs = require('fs')
// 回调函数,拿到读取失败和成功的结果 
err dataStrfs.readFile('./files/11.txt','utf8', function(err, dataStr) {   
 // 打印失败的结果   
 //如果读取成功,则err的值为null    
//如果读取失败,则err 的值为错误对象,datastr的值为undefined    
console.log(err)   
 console.log('----')    // 打印成功的结果    
console.log(dataStr)
})

1.1.3 判断文件是否读取失败

可以判断err对象是否为null,从而判断文件读取的结果:

const fs = require('fs')
fs.readFile('./files/1.txt','utf8', function(err, dataStr){    
if(err){        
return console.log('读取文件失败!'+ err.message)    
}    
console.log('读取文件成功!'+ dataStr)
})

1.2 fs.writeFile()

1.2.1 语法格式

使用fs.writeFile0方法,可以向指定的文件中写入内容

fs.writeFile(file, data[,options], callback)

1.2.2 示例代码

//1.导入fs文件系统模块
const fs = require('fs')
	// 2.调用fs.writeFile()方法,写入文件的内容
	// 参数1:表示文件的存放路径
	// 参数2:表示要写入的内容
	// 参数3:回调函数
fs.writeFile('f:/files/2.txt', 'abcd', function(err){    
		//2.1如果文件写入成功,则err的值等于nul1    
		//2.2如果文件写入失败,则err的值等于一个错误对象    
		console.log(err)
})

1.2.3 判断文件是否写入成功

// 1.导入fs 文件系统模块
const fs = require('fs')
fs.writeFile('f:/files/2.txt','abcd', function(err){    
    if (err){            
			return console.log('文件写入失败!'+err.message)        
		}        
		console.log('文件写入成功!')
})

2.path 路径模块

3. http 模块