Nodejs介绍
Node.js是一个Javascript运行环境(runtime)。它让JavaScript可以开发后端程序,它几乎能实现其他后端语言能实现的所有功能。单线程
Node是基于Google V8引擎,V8引擎是Google发布的一款开源的JavaScript引擎。
Nodejs最擅长高并发
进程和线程
进程
进程负责为程序的运行提供必备的环境、
进程就相当于工厂的车间
线程
线程计算机中的最小的计算单位,线程负责执行进程中的程序
线程就相当于工厂中的工人
NPM介绍
npm是世界上最大的开放源代码的生态系统,npm是随同NodeJS一起安装的包管理工具
npm命令
npm init --yes 生成package.json文件
npm install md5 --save(cnpm加上save可以让配置dependencies中添加md5的配置信息,npm则可以省略,会默认加上)
npm install 包 -save-dev 添加到devDependencies配置中
npm uninstall md5 卸载模块
npm i 根据package.json文件配置生成node_modules
npm list 查看当前目录下已安装的node包
npm info 模块 查看模块的版本
npm install 模块@1.8.0 指定版本安装
模块化 CommonJs
CommonJs就是模块化的标准,node就是CommonJs(模块化)的实现
通过exports或者module.exports暴露属性或者方法
通过require的方式引入模块
方式一:exports导出
语法:
exports导出
exports.xxxx=xxxx
cosnt a = require('地址')
打印a {xxxx:{}}
方式二:module.exports (只有一个对象推荐使用)
module.exports=obj
cosnt a = require('地址')
打印a {}
通过require引入的时候会发生两种情况
在被引入的文件node_modules文件夹下,引入是地址可以省略node_modules
例: node_modules
axios
index.js
db
db.js
这样的目录结构
require('./axios') 当文件是index可以省略
require('db.db')
这种情况可以直接在db文件夹下npm init --yes 生成一个package.json文件
之后就可以这样引入require('db')
执行机制是package.json文件中的main
三个核心模块
http src Fs
http的使用
//request 获取url穿过来的信息 //response 给浏览器的响应信息 const http = require('http'); http.createserver((request,response)=>{ const method = req.method; //获取请求方式 "GET"/"POST"... const url = req.url;//获取请求的地址 const path = req.url.split('?')[0]; const query = qs.parse(req.url.split('?')[1]); response.writeHead(200,{'Content-Type':'text/html;charset="utf-8"'}) response.write(<head><meta charset="utf-8"/></head>) response.end() }).listen(3001)
src
待补充……
Fs
引入:const fs = require(‘fs’);
方法
fs.stat 检测时文件还是目录
fs.mkdir 创建目录
fs.writeFile 创建写入文件
fs.appendFile 追加文件
fs.readFile 读取文件
fs.rename 重命名 移动文件
fs.rmdir 删除目录
fs.unlink 删除文件
自定义模块
第三方的模块,由包组成,可以通过包来对一组具有相互依赖关系的模块进行统一管理
包目录
package.json:包描述文件
bin:用于存放可执行二进制文件的目录
lib:用于存放JavaScript代码的目录
doc:用于存放文档的目录
安装supervisor
作用,不用每次写入新的内容之后关闭服务,再打开服务
安装 cnpm install -g supervisor
querystring获取get参数
引入 const querystring = require('querystring')
使用 querystring.parse(url.split(’?’)[1])
安装cnpm
$ npm install cnpm -g --registry=https://registry.npm.taobao.org
package.json的配置
标识符
^表示第一位版本号不变,后面两位取最新的
~表示前两位不变,最后一个取最新
*表示全部取最新
指定版本安装,直接去掉符号即可
后端渲染的好处
利于seo优化
nodejs和前端的javascript的区别
server开发和前端开发的区别,重点在于切换思路
http请求概述
DNS解析,简历TCP链接,发送http请求
server接收到http请求,处理,并返回
客户端接收到返回数据,处理数据(如渲染页面,执行js)
lodash的使用(暂时放在这)
npm i lodash
const _ = require(‘lodash’);
const arr = _.concat([1,2,4,[5,6]])