JavaScript(ECMAScript)宿主环境: v8引擎
- Node.js
- 浏览器
io.js Node.js 没有浏览器安全级别的限制 功能:
- 文件的读写
- 进程的管理
- 网络通行 ... 能干什么
- API接口开发
- 工具的运行环境
- 桌面系统
nvm --- 去官网找下载最新的node命令 mac配置全局环境的文件 cd ~ pwd 看看路径 ls -la 有啥文件 cat 看文件 vim 编辑文件.bash_profile: 将下面代码copy进去 export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm [ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion" # This loads nvm bash_completion 然后输入: source .bash_profile
nvm --help nvm ls 本地node有哪些版本 nvm ls-remote 服务器端有哪些版本可用 nvm install --lts 稳定版 nvm uninstall / nvm use
代码 上传npm 必须修改到npmjs源 npm config set registry https://registry.npm.taobao.org npm config set registry https://registry.npmjs.org npm config get registry 查看当前源
上传 npm
1.注册npmjs账号,记住登录进去验证绑定邮箱
npm adduser
npm publish
Node进程维护工具: nodemon pm2 supervisor
Node 常用模块
http:再看
http
url
url.parse(url) url.format(obj) url.resolve(url + 'abc')
querystring
qs.parse(str,[';'],[':']) qs.stringify(str,[';'],[':']) qs.escape(str) qs.unescape(str)
fs
回调错误优先
文件 fs.writeFile fs.readFile fs.appendFile fs.unlink fs.existSync 是否存在
文件夹 fs.mkdir 创建 fs.rmdir 删除 fs.readdir 读取文件夹内容 fs.stat
10.0以上版本 var s = fs.promises
fs.watch(url,(eventType,filename)=>{ }) fs.watchFile(url,(current,previous)=>{
})
流
const readStream = fsconst writeStream = fsreadStream
zlib
zlib gzip = zlib.createGzip
events
events.on() events.once() events.off() events.emit ()
path
path.extname()
1.原生Node.js静态资源服务器
注意:node-模块之间使用common.js规范,注意模块的引入与暴露
思想:静态资源服务器!
index.js:入口配置文件
---服务器,先起个服务,node内置http.createServer(),记得最后配置一个端口号
---获取浏览器请求的文件路径,http的内置参数(req.res) req.url 例如:/index.html
---获取当前服务器配置文件的绝对路径:用node内置方法__dirname获取当前文件夹绝对路径 ,在指向:拼接上静态资源文件夹的路径;
---上述两个路径用node内置path.join(注意join参数接收两个,是第二个参数拼接在第一个参数后面)进行拼接,及获取到服务器对应文件的绝对路径
---可以使用判断跳过favicon.ico的错误
---调用content.js文件,进行判断
---利用node内置path.extname()获取文件类型,及返回路径最后的文件后缀,如".html",再用slice(1),去掉第一个点;
---拿到文件类型,调用mine文件,查看mine文件中是否存在该文件类型
---不存在返回一个默认类型,存在则取出对应的解析类型 如:text/html
---为res,及向浏览器返回设置传出头,res.setHeader(('Content-Type', 上述返回的解析类型))
---在对解析类型进行判断,若是image,使用res.write(文件数据,'binary')返回浏览器请求的结果,否则直接res.write(文件数据)
content.js: 控制器
---使用node内置fs.existsSync(路径),判断当前路径是否存在
---fs.statSync(路径),返回值,对象,文件具体详情
---利用上面的返回值stat.isDirectory()判断是否是文件夹类型,在决定调用dir方法,还是file方法
dir.js 读取文件夹(可以返回html标签,并对当前文件返回具体内用)
---使用node内置fs.readdirSync(),读取当前路径下的所有文件夹,文件也当文件夹了,返回值是一个数组对象
---使用数组遍历方法Array.entries(entries() 方法返回一个新的Array Iterator对象,该对象包含数组中每个索引的键/值对。)并用for of方法对其取出value值
file.js 读取文件
---使用node内置fs.readFileSync(文件路径)读取内容并返回
mine.js 判断类型使用