Node JS基础

Node

Node是基于chrome V8的js运行环境css

去node.js官网下载安装包安装便可html

在命令行工具输入node -v后回车可查看node环境是否安装成功前端

js是基于ECMAScript语法的,操做BOM和DOMnode

node.js也是基于ECMAScript语法,还有额外的Node APImysql

若是须要不依赖html运行js,只须要在js所在目录按住shift,右键打开命令栏运行linux

node.js内部的变量和方法默认不能被外部访问,若是a.js内部的方法要被外部(b.js)访问使用:web

1.在a内使用exports.变量=变量sql

2.在a内使用module.exports.变量=变量chrome

若是同时使用export和module.expore变量,以module.expore为准数据库

3.在b内使用require(‘文件名’)访问

Node系统模块

fs方法

f:即file文件

s:即system系统

./表明本级目录 ../表明下级目录

读取文件

fs.readFile(“文件路径”,“文件编码”,回调函数)

文件引用 const fs = require(”fs“);

回调函数内包含(err,doc)

err表明是否出错,返回null表明没有出错,doc为文件内容

写入文件

fs.weiteFile(“要写入的文件名”,“要写入的内容”,回调函数)

若是没有要写入的文件系统会自动建立

路径拼接

path方法

window的路径基本使用/\

但服务器linux只有/

用户上传头像等是保存到服务器中,因此须要路径拼接

导入path模块

const path= require(“path”)

let fin = path.join(“a”,“b”,“c.css”)

结果为a\b\c.css

在大多数状况下都会使用绝对路径

使用--dirname能够获取绝对路径

eg:path.join(__dirname,"路径")

第三方模块

是多个文件组成的包 npmjs.com有文档

部分第三方模块能够链式编写,即res.status().send()

获取第三方模块,使用npm(node packge manager)命令

下载:npm install 模块名称(下载到命令行所在目录)

卸载:npm uninstall 模块名称

nodemon是一个第三方辅助执行文件(文件被修改会自动执行)

1.npm install nodemon -g(-g表明全局安装)

2.使用nodemon代替node执行

3.ctrl+c结束命令

nrm:npm下载地址切换工具

1.npm install -g

2.nrm ls可查看下载地址列表

3.nrm use +地址

gulp第三方模块前端构建工具

项目上线,html、js、css合并

语法转换

公共文件抽离

1.npm install gulp

2.在项目根目录创建gulpfile.js文件

3.建立两个文件夹,src文件夹放置源代码,dist文件夹放置压缩后的文件

4.在gulpfile.js内编写任务

5.执行gulpfile.js

gulp中的方法(用*能够获取全部同类型文件)

gulp.src();获取要处理的文件

gulp.dest()输出文件

gulp.task()创建gulp任务

gulp.watch()监控文件变化

eg:const gulp = require("gulp");

gulp.task(first,()=>{

gulp.src("./src/css").pipe(gulp.dest('dist/css'))

]})

gulp插件

gulp-htmlmin压缩html文件中的代码

gulp-csso压缩css

gulp-babel js语法转化

gulp-less less语法转化

gulp-uglify 压缩混淆js

gulp-file-include 公共文件包含

通常网站头部和尾部会用到,使用@@include(“公共路径”)能够引用

browsersync 浏览器实时同步

gulp能够将全部任务封装起来依次执行eg:gulp.task('default',['htmlmin','cssmin','copy'])

package.json

package.json会记录项目相关信息,包括第三方模块(在dependencies字段中),快速生成package.json文件可使用 npm install -y

在传输时可避免传递node-modules模块(本模块过大),使用npm install便可下载全部第三模块

开发依赖

项目在开发阶段的依赖称为开发依赖,但有些项目依赖在上线以后不须要了,因此在安装包时,在开发阶段须要的依赖以--save-dev命令结尾,此文件会存储在devDependencies中,若是在服务器线上环境使用--production

服务器端

url:传输协议://IP或域名:端口(默认为80)/资源所在位置

http超文本传输协议

建立web服务器

请求报文

post 发送数据(安全,放在请求体中)

get 请求数据(不安全,经过url传递)

req.headers获取请求报文信息

req.url获取请求地址

req.method获取请求方法

res.writeHead(状态码,{‘content-type’:文件类型})能够设置http状态码和默认编码方式

获取文件type可使用mine插件

url.parse(req.url,true)会解析url的参数(限于get请求)

url.parse().pathname能够返回无参数的url

querystring能够处理post请求的字符串

路由

请求什么响应什么,网页的访问路径

同步api从上到下执行,异步api会放在栈堆中,等到触发才执行

异步api须要经过回调函数来调用,没有返回值,因此须要封装callback函数

读取文件是异步API,第二部是回调函数

回调异步解决的方法:将回调函数写入回调函数中,但会致使过多嵌套,还可使用promise构造函数

eg:let promise = new Promise((resolve,reject)=>{

fs.readFile("./1.txt",''utf8',(err ,result) = >{

​ if(err!=null){

​ reject(err)

}else{resolve(result)}

})

})

promise.then((result)=>{

​ console.log(result);

})

.catch((err)=>{console.log(err)})

若是成功调用resolve,失败调用reject

es7新增异步函数

在普通函数前加async关键字,默认返回promise

eg: anync function fn (){

throw"发生了一些错误"

return 123;

}

fn().then(function(data){

​ console.log(data)

}).catch(function(err){

​ console.log(err)

})

throw抛出异常,使用catch接收,throw后的代码不执行

async内部有await方法,能够暂停函数的执行,只有有返回值才执行

promisify方法能够改造异步方法好比fs方法,返回一个prominse对象

在调用Promisify方法

eg:const promisify = require("util").promisify

const readFile = promisify(fs.readFile)

在浏览器中去全局对象是window,在node中全局对象是gobal

数据库

网站的数据是存储在数据库中

mongoDB 基于JSON

mysql 用于PHP

第三方模块mongooes

须要启动MongoDB net stat MongoDB

增删改查

EXPRESS框架

使用npm install express命令进行下载

框架特性

提供了简洁的路由定义

对获取http请求参数进行简化处理

对模板引擎支持程度高,方便渲染html

提供了中间件机制有效控制http请求

拥有大量第三方中间件对功能进行扩展

中间件

中间件就是一堆方法,能够接收客户端发来的请求,也能够对请求作出响应,也能够将请求交给下一个中间件处理

中间件由中间件方法(由框架提供),请求处理函数(开发人员提供)

能够针对同一个请求设置多个中间件

中间件默认从上到下匹配,匹配成功就终止匹配,可使用next方法将请求的控制权交给下一个中间件

中间件经常使用来作登陆保护,没有登陆就不调用next方法

还能够在网站维护时设置中间件,拦截全部路由

能够自定义404页面,在全部路由最后定义,表明上面的都没有匹配,使用res.status设置状态码

框架模板引擎

unique能够判断数据是否重复

serializeArray能够获取表单中用户输入的内容,默认是数组内部有两个值,一个是name即表单的name,一个是value,即表单的value

密码加密

第三方模块bcrypt,单程加密,能够在密码中加入随机字符串增长密码的破解难度

cookie和session

cookie是服务器在第一次响应客户端请求的时候存储在客户端,在下一次请求服务器时,会自动发送cookie中的储存数据给服务器端,cooike是有过时时间的

session是一个对象,能够储存多条数据 ,每条数据都有对应的sessionid做为标识,页面关闭session就失效了

相关文章
相关标签/搜索