前端工程师须要学习nodejs来扩充本身的知识边界,也让本身更方便的理解webpack,前端工程化等。javascript
process对象是node中的一个全局变量,它提供了nodejs进程的信息并对其进行控制,做为全局变量,process始终能够直接使用。前端
argv是咱们常会见到一个属性,process.argv返回一个数组,包含了在运行node代码时命令行中输入的值。举个例子假如咱们运行一段node代码,并在命令行中添加一些参数:$ node app.js xiaoming 2
,那么process.argv的值即为['node', '/path/to/your/app.js', 'xiaoming', 2]
。vue
这个属性值仍是比较常见的,在vue-cli2中的webpack配置中就使用到了。根据后面的参数来判断当前是启动的是开发仍是打包、测试等环境,来加载不一样的webpack配置。有兴趣的能够自行vue的webpack配置代码中去查看。java
node做为后端程序,i/o处理能力天然是其核心能力之一。fs模块提供了一个能够与文件系统进行交互的api,全部的文件操做都同时具备同步和异步两种方式。使用时须要先引入fs模块const fs = require('fs');
。node
fs.readFile('/path/to/file/',()=>{})
和fs.readFileSync('/path/to/file/')
,分别是fs操做文件系统的异步(不阻塞)和同步(阻塞)两种方法。node中只要是以sync
结尾的方法皆为同步(阻塞)操做。webpack
用法简介:web
const fs = require('fs');
// 1.异步读取文件,读取的数据在其回调函数中
fs.readFile('/path/to/file', (err, res) => {
const result = '';
// res表示异步读取文件内容,默认是buffer格式
// 对获取res文件添加状态监听
res.on('data',(data) => {
result += data;
});
// 监听res的end状态,表示文件读取完毕了
res.on('end', () => {
// 此时的result表示获取的所有文件内容
});
})
// 2.同步读取文件
const data = fs.readFileSync('/path/to/file/');
复制代码
咱们能够看到,获取文件内容时,默认是一种buffer格式,这个格式是node中为了处理tcp流和文件系统操做中的二进制数据而引入的api。vue-cli
这两个函数的使用方法和readFile、readFileSync类似,读取一个文件路径,返回的是一个相应文件目录下的文件名称的数组。使用方法分别为fs.readdir('/filePath',(err, list)=>{ });
和const list = fs.readdirSync('/filePath');
后端
上面咱们看到,在node中如何想使用其余模块,方式是使用require引入。其实在node中,咱们也能够开发本身的模块并引入使用。前端工程化
示例代码:
// module.js
module.exports = function(args) {
// 这里开发本身模块的逻辑
}
// your program
const myModule = require('module.js');
...
复制代码
在开发本身模块的时候有几个原则:
1.导出一个函数,这个函数能够准确接受本身所须要的参数
2.模块程序不要改变其余任何东西,好比全局变量
3.不要在模块中作任何输出,应该将处理的结果返回出去由使用的程序处理
4.若是本身的模块是个异步操做,则接受的参数中须要有回调函数callback
5.当有错误发生,或者有数据的时候使用回调函数进行处理
6.回调函数需按照node习惯,err错误处理做为函数的第一个参数function callback(err, data){}
http模块是node最重要的核心功能之一,能够用来处理http请求和生成一个简单的http服务。先来看一下使用http模块的几个简单应用场景。
// 引入
const http = require('http');
// 1.发起一个简单的http请求
http.get('/url', function(err, res){
// res参数是node中的stream类型对象
// 能够理解成会触发一些事件的对象
res.on('data', function(data){
// 对res进行监听,获取到的data是buffer对象
});
res.on('end', function() {
});
});
// 2.生成一个本地的server,端口为3000
const server = http.createServer(function(req, res) {
// req表示请求,res表示响应
});
server.listen(3000);
复制代码
做者简介: 宫晨光,人和将来大数据前端工程师。