# Node.js学习笔记
浏览器是JavaScript的前端运行环境
nodejs是JavaScript的后端运行环境
# 1.什么是node.js
js是解释性脚本语言,需要解析器和运行环境才能运行,在客户端的解析器是浏览器中的v8解析引擎等等,服务端就是nodejs
总结:nodejs是js的一个解析器,而运行在nodejs中的js脚本的主要作用是操作磁盘文件或者搭建http服务器,通过npm安装第三方包,可以实现更多更完善的功能
更直观来说,nodejs是js的一个运行环境,且nodejs是基于Chrome v8引擎的JavaScript运行环境
# 2.运行命令
node js文件名.js
# 3.模块
大型程序一般都是模块化开发,将不同代码拆分到不同的js文件中,每个js文件就是一个模块
# 3.1 require函数
用于在当前模块加载和使用其他模块
//导入内置的http模块
var http = require('http')
// 导入自定义模块
var demo = require('./demo.js')
//导入json数据
var data = require('./data.json')
# 3.2 exports对象
别的模块通过
require
函数使用当前模块时得到的就是当前模块的module.exports
对象,exports对象和前者有相同的指向,但是对外接口以前者为准
当前模块的导出对象,用于导出模块公有方法和属性。
// 导出方法
exports.hello = function(){
console.log('hello world')
}
//导出属性
exports.name = '小明'
# 3.3 module对象
通过module
对象可以访问到当前模块的一些相关信息,但最多的用途是替换当前模块的导出对象。
//将默认导出的普通对象更改为函数,导出时所有的对外接口以module.exports为准
module.exports = function() {
console.log('hello world');
}
注意:导出的模块只会初始化一次,后面被缓存起来重复使用
# 4.模块的路径解析规则
1.内置模块不做路径解析,直接返回内置模块的导出对象
2.所有的模块都会从node_modules目录为核心进行路径解析
3.可以配置环境变量来制定模块搜索路径
# 5.包package
1.多个子模块组成的大模块称为包,也可以将nodejs编写的程序称为包,所有的第三方模块也叫做包
2.每个包都有一个入口模块main.js和配置文件package.json
3.package.json中的重要属性
main:应用程序的入口
scripts:可以运行的node脚本
dependcies:npm软件包生产依赖
devDependencies:npm软件包开发依赖
4.当require方法加载整个文件夹时,会先加载包中package.json配置文件指定的入口模块,没有则加载目录下的index.js模块
# 6.包管理工具NPM
随同nodejs一起安装,可以从NPM服务器下载第三方包或命令行程序到本地
安装module包的npm命令
// 全局包
npm install 包名 -g
nom i 包名 -g
// 项目包
// 生产环境
npm i 包名 -S
// 开发环境
npm i 包名 -D
安装时参考官网以判断该模块作为生产依赖包,还是开发依赖包
# 7.文件系统
node内置模块包括文件系统fs、路径模块path、网络请求http;即nodejs提供的,在js代码编译运行时便已经存在的模块
fs.readFile(pathname, function (err, data) {
if (err) {
// Deal with error.
} else {
// 处理文件中的数据
}
});
// pathname若使用相对路径,则会将执行node指令的目录和该路径进行拼接,所以这个参数最好设置为绝对路径
# 8.path模块
用于操作资源路径,可以配合fs系统使用
// 导入path模块
const path = require('path')
// 路径拼接,可以解析'../'和'./'
path.join('/a','/b/c','../','./d');
// 获取当前文件所在目录的绝对路径
__dirname
// 获取指定资源的文件名
path.basename(pathStr); //参数为文件资源路径字符串
// 获取指定资源的文件扩展名
path.extname(pathStr); //同上
# 8.网络操作
所有的网络操作都建立在http模块的基础上,首先需要使用
.createServer
方法创建一个服务器,然后调用.listen
方法监听端口。之后,每当来了一个客户端请求,创建服务器时传入的回调函数就被调用一次。
var http = require('http');
http.createServer(function (request, response) {
response.writeHead(200, { 'Content-Type': 'text-plain' });
response.end('Hello World\n');
}).listen(8124);
创建web服务器的步骤:
1.导入http模块
2.调用http.createServer()
3.调用server.on('request',callback(req,res){})监听客户端请求
4.调用server.listen(端口号,callback)启动服务
← jQuery笔记 关于服务器的一些概念 →