0517nodejs

阅读: 评论:0

0517nodejs

0517nodejs

Nodejs

1、node的应用场景

创建应用服务
web开发
接口开发
客户端应用工具,react、vue、gulp、webpack脚手架

2、模块化

导出  ports
导入  require
// commonjs规范  == 只能在nodejs中使用,不可以浏览器中使用 cmd/amd/es6
// 导出 ports
// 区别:
// 共同点:导出模块
// 差别&#ports它可以导出对象,而exports不可以
// exports = ports  引用 原型指向
// 导入
// require(路径)

2.1、核心模块

// 导入一个内置的模块,os模块,使用一个变量接受
/* const os = require('os')
console.log(os.hostname()); */

2.2、第三方模块

// 如果安装第3方法模块,第一步先查看一下当前项目中,有没有package.json文件,如果没有则初始化一下
// npm init -y
// npm i -S lodash
/* const _ = require('lodash')
// 分割数组
console.log(_.chunk(['a', 'b', 'c', 'd'], 2)); */

2.3、自定义模块

// commonjs中,把一个文件当作一个模块
/* const fn = require('./userModule')
console.log(fn());*//* const fn = require('user')
console.log(fn());*/

tips:
若调用模块返回的是一个实例化对象,但是想用类,可以使用以下方法

const user = require('user');   //一个实例化对象
console.Name());
console.log(user.__proto__.constructor);//找到类

3、命令参数和环境变量

node app.js --port 8080;//对于node来说app.js --port 8080都是参数
可以通过process这个内置对象完成参数的获取
以下方法对命令参数处理

/* let args = {}
let arr = process.argv.slice(2);
arr.forEach((item, index) => {// console.log(/^-/.test(item));if (item.startsWith('--')) {args[item.slice(2)] = arr[index + 1]}
})
console.log(args); *//* let args = process.argv.slice(2).reduce((p, c, index, arr) => {if (c.startsWith('--')) {p[c.slice(2)] = arr[index + 1]}return p
}, {});
console.log(args);*/
const argv = require('minimist');//npm i -S minimist  需要安装库文件console.log(argv(process.argv.slice(2)));

4、cross-env修改环境


// 获取指定的环境变量
if (v.NODE_ENV == 'dev') {// 开发环境console.log('开发中');
} else if (v.NODE_ENV == 'test') {console.log('测试中');
} else if (v.NODE_ENV == 'production') {console.log('上线');
} else {// throw new Error('有误')console.log('我们的环境有 dev|test|production');
}//===================================================
//package.json文件中修改
{"name": "01_base","version": "1.0.0","description": "","main": "01_module.js","scripts": {"dev": "cross-env NODE_ENV=dev node 03_env.js","test": "cross-env NODE_ENV=test node 03_env.js","build": "cross-env NODE_ENV=production node 03_env.js"},"keywords": [],"author": "wuchen","license": "ISC","dependencies": {"minimist": "^1.2.5"},"devDependencies": {"cross-env": "^7.0.3"}
}//=============================
//用npm启动,例如
npm run dev

5、常用内置模块

5.1、os

const os = require('os')
// 换行符
os.EOL //根据操作系统生成对应的换行符 window rn,linux下面 n// 查看cpu相关信息
os.cpus()// 总内存大小 (单位 字节)
os.totalmem()
// 空余内存大小 (单位 字节)
os.freemem()

5.2、path

const path = require('path')// 获取路径最后一部内容  一般用它来获取文件名称
path.basename('c:/a/b/c/d.html')  // d.html// 获取目录名,路径最后分隔符部分被忽略
path.dirname('c:/a/b/c/d.html') // c:/a/b/c// 获取路径中文件扩展名
ame('c:/a/b/c/d.html') // .html// 给定的路径连接在一起
path.join('/a', 'b', 'c') // /a/b/c
// 把相对地址转为绝对路径
solve('/a', '../b')

5.3url

// const url = require('url')
// let href = '.html?id=100#hash'// 参数1:分析url地址
// 参数2:boolean true为query属性转为对象,false字符串
// 参数3:一般不用 boolean true时,在url地址没有写协议时,还可以获取主机名
// console.log(url.parse(href, true, true));
// console.log(url.parse(href, true));
/* const { pathname, query } = url.parse(href, true)
console.log(pathname, query); *///============================================
// URL js内置// let href = '.html?id=100&name=lisi#hash'
// getAll()
// let href = '.html?id=100&id=200&name=lisi#hash'
// 全部的get数据
let href = '.html?id=100&name=lisi#hash'
const url = new URL(href);
// console.log(url.searchParams);
// console.log(('id'));
// console.log(('name'));// 获取query中相同名称的数据 以数组形返回
// console.log(All('id'));// 获取全部的get数据
// console.log(ies());
for (let [key, value] of ies()) {console.log(key, value);
}

5.4、querystring

用于解析和格式化url的工具

const querystring = require('querystring')// query字符串转为对象
querystring.parse('foo=bar&abc=xyz')// 对象转为query字符串
querystring.stringify({ foo: 'bar',abc: 'xyz'})

5.5、fs模块

const fs = require('fs')let filepath = solve('');//文件操作
// 写入数据
fs.writeFile(文件路径,数据,err=>{})// 读取文件中数据
fs.readFile(filepath , 'utf8’,(err,data)=>{})// 检查文件或目录是否存在    返回true/false
fs.existsSync(path)// 获取文件信息
fs.stat(filepath ,(err,stats)=>{stats.isDirectory() // 是否是目录stats.isFile()       // 是否为文件stats.size            // 文件大小(以字节为单位)
})// 删除文件
fs.unlink(filepath ,err=>{})//=================================
// 目录操作
// 创建目录
fs.mkdir('./logs', { recursive: true }, (err) => {console.log('done.')
})
// 删除目录
fs.rmdir('./logs', { recursive: true }, () => {console.log('done.')
})
// 读取目录列表
fs.readdir(path, (err,data) => {// data是一个数组,里面包含了当前路径下所有的文件和文件夹名称
})
//=======================
//删除文件的异步写法
delDir(dirpath, () => { })function delDir(dirpath, cb) {fs.stat(dirpath, (err, stat) => {if (stat.isFile()) {fs.unlink(dirpath, cb)} else {fs.readdir(dirpath, 'utf-8', (err, dirs) => {if (dirs.length == 0) {// 此目录是一个空目录fs.rmdir(dirpath, cb)} else {// 读取的目录中的相对路径转为绝对路径dirs = dirs.map(item => path.join(dirpath, item))let index = 0;function doneFn() {if (++index == dirs.length) {fs.rmdir(dirpath, cb)}}dirs.forEach(dir => {delDir(dir, doneFn)})}})}})
}

5.6、触发器

类似于js中的抛发侦听时间
先订阅后发布

const EventEmitter = require('events')
const events = new EventEmitter();// 订阅
('上课了', arg => {console.log('小明订阅:' + arg);
})('上课了', (arg) => {console.log('小张订阅:' + arg);
})
##############
it('上课了', '今天讲nodejs')

6、web服务器

Web服务器一般指的是网站服务器,是指驻留因特网上某一台或N台计算机的程序,可以处理浏览器等Web客户端的请求并返回相应响应,目前最主流的三个Web服务器是Apache、 Nginx 、IIS、Tomcat。
服务器:IP地址、域名、端口、协议

6.1、创建web服务

// 成为一个http服务器
// 主机 + 协议(nodejs中的http模块[http协议]) + 端口号
// http事件处理
const http = require('http');
const {now} = require('./utils/date')
// 创建一个web服务器
const server = ateServer()// 监听事件 浏览端请求  request
// request 请求对象 用于获取浏览器请求 头和体
// response 服务器对浏览器的响应 行+头+体
('request', (request, response) => {// 当前的请求 uri// console.log(request.url);// 获取请求方法// console.hod);// 请求头获取// console.log(request.headers);if (request.url !== '/favicon.ico') {console.log(now());console.log(request.headers['user-agent']);}// 响应头// response.setHeader('Content-Type', 'text/plain;charset=utf-8')// response.setHeader('Content-Type', 'text/html;charset=utf-8')response.setHeader('Content-Type', 'application/json;charset=utf-8')// 服务器给浏览器响应// d('你好世界')// d('<h3>你好世界</h3>')d(JSON.stringify({ id: 1, name: '张三' }))})// 监听 端口
// 0.0.0.0 => 监听服务器中所有的网址请求
// 具体的ip 对应的此网卡的ip才能访问   10   200
// ifconfig => linux
server.listen(3000, '0.0.0.0', () => {console.log('服务已启动 127.0.0.1:3000');
})

本文发布于:2024-01-30 15:39:59,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170660040121056.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:nodejs
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23