nodeJs简介
nodejs是基于Chrome V8引擎的javascript运行环境。让javascript运行再服务端的开发平台上,是一门后端语言。
nodeJs的下载安装
nodejs的:下载地址。安装步骤没什么好讲的,直接下一步就行了。安装完之后安装window+R键打开cmd窗口运行node -v有版本显示就说明安装成功了。
nodeJs的内置API
- fs:这个API可以读取文件和写入文件。要使用API之前我们先要使用require导入fs
const fs = require('fs')
- fs.readFile():读取文件,使用方法如下:
const fs = require('fs')
fs.readFile('./1.txt', 'utf8', function(err,dataStr){
if(err){
return console.log('读取文件失败!' + err);
}
console.log('读取文件成功!' + dataStr);
})
这个方法有三个参数:
第一个是要读取文件的路径,第二个是以什么格式读取,第三个是回调函数(err,dataStr)err是读取文件失败的报错信息,dataStr是读取的文件信息。
- fs.writeFile():写入文件,使用方法如下:
const fs = require('fs')
const str = 'hello'
fs.writeFile('./1.txt', str, function(err){
if(err) {
return console.log('写入失败' + err);
}
console.log('写入成功');
})
这个方法也有三个参数:
第一个是要写入文件的路径,第二个是要写入的数据,第三个是回调函数(err)err是写入文件失败的报错信息
- path:这个是路径API,首先也是需要用require导入
- path.join():是用于连接路径的。使用方法如下:
const path = require('path')
const str = path.join('/a','/b/c','./','/d','/e')
console.log(str);
这里的./是返回上一层路径,所以最后打印出来的结果是:/a/b/d/e
2. path.basename():是用于获取文件名。使用方法如下:
const path = require('path')
//文件的路径
const fpath = '/a/b/c/d/index.html'
const fullPath = path.basename(fpath)
console.log(fullPath);
const hPath = path.basename(fpath, '.html')
console.log(hPath);
返回结果:
这个方法有两个参数:第一个是要访问文件的路径,会返回一个带后缀名的文件给你。第二个参数是文件的后缀名,写上的话就返回不带后缀名的文件名。
3. path:extname():是用于获取文件的后缀名,使用方法如下:
const path = require('path')
//文件的路径
const fPath = '/a/b/c/d/index.html'
const hPath = path.extname(fPath)
console.log(hPath);
结果如下:
4. __dirname:当前文件所在文件夹的位置,使用方法如下:
const path = require('path')
const fs = require('fs')
const str = path.join('/a','/b/c','./','/d','/e')
fs.readFile(path.join(__dirname, './成绩OK.txt'), 'utf8', function(err,dataStr){})
console.log(__dirname)
结果如下:
- http服务器的API,这个模块的作用是在于搭建一个服务器,作用与浏览器和用户之间的数据交换。用户发起请求,经过http服务器然后响应给用户所要请求的数据。通常搭建一个http服务器需要分4步走。使用方法如下:
//1.导入http模块
const http = require('http')
//2.创建一个服务器
const server = http.createServer()
//3.给服务器绑定一个事件。第一个参数是请求,第二个参数是回调函数
server.on('request', function(req,res){
console.log('正在请求数据中...');
})
//4.给服务器一个端口,第一个参数是端口号,第二个参数是回调函数
server.listen(3030, function(){
console.log('服务器启动');
})
本地服务器访问127.0.0.1:3030就可以了方法了
结果如下:
要想关闭服务器的话,按ctrl+c就可以了。
- http服务器的请求路径和请求的方式,我们先上代码再来分析:
const http = require('http')
const server = http.createServer()
server.on('request', (req, res) => {
const url = req.url
const method = req.method
res.setHeader('Content-type', 'text/html;charset=utf-8')
res.end(url + 'And' + method)
})
server.listen(80, () => {
console.log('服务器已经启动http://127.0.0.1');
})
如上代码可以看出,绑定服务器的回调函数里有两个参数分别是req和res。req就是发起的请求,可以通过url和method这两个属性得到请求路径和请求的方式。
res就是要响应给用户的数据。可以通过end这个属性响应给用户数据。这里我就把请求路径和请求方式响应给用户,结果如下:
还有一个setHeader()方法是用来处理响应时浏览器会出现中文乱码的问题。
模块的作用域
在默认情况下模块的不能在别的模块使用的,就跟javascript的局部作用域是一样的。这里举个例子:
//这是一个自定义模块
const username = 'zs'
function sayHello() {
console.log('大家好,我是' + username);
}
在别的模块中使用方法如下:
//导入自定义模块并赋值给m1这个常量
const m1 = require('./模块作用域')
console.log(m1);
结果如下:
就是个空对象。其实这个空对象就是module.exprots的模块对象。
要想把自定义模块能用在别的模块中就可以使用module.exprots这个模块对象给抛出去就可以了,示例如下:
const username = 'zs'
function sayHeelo() {
console.log(username);
}
module.exports = {
username,
sayHeelo
}
//导入自定义模块并赋值给m1这个常量
const m2 = require('./module对象模块')
console.log(m2);
结果如下: