今天学习了node.js,进行一个归纳汇总
node.js安装
进入官网下载msi,打开安装,无脑下一步(注意修改安装路径和配置环境那儿勾上)。
安装完成后,使用win+R输入cmd打开控制台:
在控制台中分别输入node -v 和 npm -v ,如果控制台返回了对应版本号,则表示安装成功!
node简单使用
创建一个hello.js文件
console.log('hello Js!')
在当前文件的目录下打开cmd,并输入
node hello.js
模块系统
使用nodeJS编写应用程序主要使用:1.ECMAScript、2.内置/核心模块、3.第三方模块、4.自定义模块(js文件)。
commonJS模板规范:
一个js文件就是一个模板
在模板文件里用exports或者module.exports导出
exports.info = '我是属性一';
module.exports.say = '我是属性二';
在需要使用模板的文件里用require引入
let obj = require('./文件名') // 注意不带文件后缀
console.log(obj.info,obj.say)
注意:1.使用exports和module.exports一样,可以混合写。2.不能使用exports={}这样的方法来导出
npm的使用
查看已安装的 npm list
安装模块 npm install 模块 [安装时可写参数]
卸载模块 npm uninstall 模块
安装参数
--save 记录生产环境所需模块(默认)
--save-dev 块版本信息保存到devDependencies(开发环境)
-g 全局命令
步骤:
npm init -y 初始化环境,产生pachage.json文件,记录安装包信息
npm install(可缩写为 i ) 模块包 --save-dev -g
举例:
D:\phpStudy\PHPTutorial\WWW\day35>npm init -y
Wrote to D:\phpStudy\PHPTutorial\WWW\day35\package.json:
{
"name": "day35",
"version": "1.0.0",
"description": "",
"main": "1.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
D:\phpStudy\PHPTutorial\WWW\day35>npm i mime --save-dev -g
E:\nodejs\node_global\mime -> E:\nodejs\node_global\node_modules\mime\cli.js
+ mime@3.0.0
added 1 package from 1 contributor in 1.84s
D:\phpStudy\PHPTutorial\WWW\day35>mime jpg
image/jpeg
D:\phpStudy\PHPTutorial\WWW\day35>
扩展:nrm
由于npm在安装模块包时会到国外服务器获取,可能有些模块下载会很慢,这时候:
一、可以使用以下命令,临时设置下载源,关闭命令行窗口后失效
npm config set registry https://registry.npm.taobao.org/
二、可以使用nrm
1.安装nrm(注意加 -g )
2.使用nrm ls 查看提供下载的服务器
3.使用nrm use 名字 选择下载服务器
4.完成后再使用npm下载所需要的模块
D:\phpStudy\PHPTutorial\WWW\day35>npm i nrm -g
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
E:\nodejs\node_global\nrm -> E:\nodejs\node_global\node_modules\nrm\cli.js
+ nrm@1.2.5
added 315 packages from 148 contributors in 39.073s
D:\phpStudy\PHPTutorial\WWW\day35>nrm ls
npm ---------- https://registry.npmjs.org/
yarn --------- https://registry.yarnpkg.com/
tencent ------ https://mirrors.cloud.tencent.com/npm/
cnpm --------- https://r.cnpmjs.org/
taobao ------- https://registry.npmmirror.com/
npmMirror ---- https://skimdb.npmjs.com/registry/
D:\phpStudy\PHPTutorial\WWW\day35>nrm use taobao
Registry has been set to: https://registry.npmmirror.com/
D:\phpStudy\PHPTutorial\WWW\day35>nrm test npm
npm ------ 2183ms
nodemon自重启服务
使用nodemon来动态监听一个js文件发生的改变(目前为止的个人理解)
console.log('sa') => console.log('sa6666')
D:\phpStudy\PHPTutorial\WWW\day35>nodemon 3.js
[nodemon] 2.0.15
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node 3.js`
sa
[nodemon] clean exit - waiting for changes before restart
[nodemon] restarting due to changes...
[nodemon] starting `node 3.js`
sa6666
[nodemon] clean exit - waiting for changes before restart
^C终止批处理操作吗(Y/N)? y
http(服务器)
使用node自带的http模块来构建一个类似于vscode里的Live Sever插件产生的服务器
// 获取http模块
let http = require('http')
// 创建一个服务器
let server = http.createServer()
// 监听用户的请求,凡是xxx事件都可以用on绑定
server.on('request', (request, response) => {
console.log('有人在向此服务器发送请求')
}).listen(8088, () => {
console.log('8088号服务器开始运行')
})
D:\phpStudy\PHPTutorial\WWW\day35>node 3.js
8088号服务器开始运行
有人在向此服务器发送请求 // 此时在网页中用127.0.0.1:8088访问
监听到请求后做出反应
// 获取http模块
let http = require('http');
// 创建一个服务器
let server = http.createServer();
// 监听用户的请求,凡是xxx事件都可以用on绑定
server.on('request', (request, response) => {
// 设置响应头 防止中文乱码
response.setHeader('content-type', 'text/html;charset=UTF-8');
// 输出内容
response.write('你好,这是一个nodeJs产生的服务器!');
// 结束
response.end();
}).listen(8088, () => {
console.log('8088号服务器开始运行');
})
扩展:url模块
参考京东等大型网站的地址,如果只是通过request.url(参数自带的属性)来获取访问路径并且判断的话会很麻烦。所以需要使用nodeJs自带的url模块来获取所需要的字段,如:
// 获取http模块
let http = require('http');
// 获取url模块
let url = require('url');
// 创建一个服务器
let server = http.createServer();
// 监听用户的请求,凡是xxx事件都可以用on绑定
server.on('request', (request, response) => {
console.log(url.parse(request.url)) // 通过url模块的parse()方法,将一个url字符串转换成对象并返回
}).listen(8088, () => {
console.log('8088号服务器开始运行');
})
D:\phpStudy\PHPTutorial\WWW\day35>node 3.js
8088号服务器开始运行
Url {
protocol: null,
slashes: null,
auth: null,
host: null,
port: null,
hostname: null,
hash: null,
search: '?wa=123',
query: 'wa=123',
pathname: '/index/2021/fn',
path: '/index/2021/fn?wa=123',
href: '/index/2021/fn?wa=123'
}
此时我页面中访问的地址是:http://127.0.0.1:8088/index/2021/fn?wa=123。这时就可以通过pathname属性判断我访问的路径,从而控制输出的页面内容。
package.json文件
这个文件是在npm init -y 初始化时产生的
在里面有一个scripts可以添加需要使用的命令,如:"jsonp":"json-server --watch db.json"
在控制台输入 npm run jsonp 就可以执行里面的语句
补充:json-server
监听一个json文件,可以用来模拟当后端未完成接口时,前端用来临时模拟前后端交互测试。
使用npm install json-server -g安装
使用json-server --watch 文件名 监听
D:\phpStudy\PHPTutorial\WWW\day35>npm i json-server -g
E:\nodejs\node_global\json-server -> E:\nodejs\node_global\node_modules\json-server\lib\cli\bin.js
+ json-server@0.17.0
added 184 packages from 80 contributors in 27.132s
D:\phpStudy\PHPTutorial\WWW\day35>json-server --watch db.json
\{^_^}/ hi!
Loading db.json
Done
Resources
http://localhost:3000/goods
Home
http://localhost:3000
Type s + enter at any time to create a snapshot of the database
Watching...
总结
今天关于node.js的学习就到这里,个人觉得使用中比较重要的是http模块、url模块、json-server模块
如果有大神看出此文中的错误,请在评论区指出,我会理解学习并加以修正!!