前端学习之初识Nodejs

node

  • 是什么:js运行环境
  • 能干什么:创建web服务器,让js成为phpjava一样的语言
  • 学习地址:官网 nodejs.org 中午网:nodejs.cn

CMD运行js文件

  1. 创建js文件
  2. 找到js文件路径
  3. node 文件名

模块化系统

  1. commonjs 规范
  • Node.js模块系统中,每个文件都被视为一个独立的模块
  • 导出方法1 exports.成员名 = 值
  • 导出方法2 module.exports.成员名 = 值
  • 导入 require("./")
//a.js
function add(a=0,b=0){  
    console.log(a+b)
}
function del(a=0,b=0){  
    console.log(a-b)
}
module.exports = {
    add,
    del
}
//b.js
var b=require('./a')
console.dir(b)
add(1,2)
del(3,1)

nodejs核心内置模块

  1. fs文件操作模块
  • 用于与文件系统进行交互
  • writeFile('文件名','写入的数据',回调函数)
  • readFile('文件名','utf8',回调函数)
//02.js
const fs = require('fs')
//引入fs模块
var content = "你好"
fs.writeFile('./02.txt',content,function(err){
    if(err){
       return console.log(err)
    }
    console.log('success')  //err 为null 写入成功
})

//03.js
const fs = require('fs')
var content = "你好"
fs.readFile('./02.txt','utf8',function(err,data){
    if(err) return console.log(err)  //err 为null 写入成功
    console.log(data)  
})
  1. path模块
  • 用于处理文件和目录的路径
  • basename() 取最后一层
  • dirname() 去掉最后一层
//04.js
const path = require('path')
//引入path模块
var str = 'C:Project/view/node/class.html'
console.log(path.dirname(str)) //C:Project/view/node
console.log(path.basename(str)) //class.html
  1. os模块
  • 提供了与操作系统相关的实用方法和属性
  1. url模块
  • 模块用于处理与解析 URL
  • parse()解析url地址
//引入url模块
const url = require ('url')
console.log(url)
//parse()解析地址
var str='https://class/index?name=Jonse&pw=123'
console.log(url.parse(str,true).query.name)
//获取对应数据,es6对象解构赋值
let {name,age} = url.parse(str,true).query
    console.log(name) //Jonse
    console.log(age)    //123
  1. http模块
  • 创建http服务器,接收请求数据和响应请求
    I. 引入模块
    II. 创建服务器
    III. 开启服务器
    VI. 开启服务器
//1.引入
const http = require('http')
//2.创建服务器
var server = http.createServer()
//3.监听请求,req:request请求 res:response 响应
server.on('request',function(req,res){
    //响应内容,解决乱码(设置响应头部)
    res.setHeader('Content-Type','text/html;charset=utf-8')
    res.write('hello')
    res.end()
})
//4.启动服务器
server.listen(12345,function(){
    console.log("服务已开启,访问http://localhost:12345")
})
  • req对象
    请求路径 req.url
    请求方式 req.method

  • res对象
    res.setHeader()
    res.write()
    res.end()

  • 留言板案例

    1. 项目文件初始化
    2. 响应对应静态文件
  • css js 文件不用设置请求头

    1. 静态文件处理 indexOf() 方法
var baseUrl = req.url
if(baseUrl.indexOf('/public')>-1){
    fs.readFile('.'+baseUrl,'utf-8',function(err,data){
        if(err) return res.end(err)
        //success响应数据
        res.write(data)
        //响应结束
        res.end()
    })
}
  1. 动态显示内容
  • 创建数据
  • 遍历数据
  • 替换原data 用replace()方法
  • 输出newData
  1. 数据处理get请求
  2. 表单属性
    • action:请求地址
    • method:请求方式
    • name:请求参数
  3. 监听请求
    +

js基础ECMAscript

第三方模块

npm

是什么:命令行工具
做什么:下载第三方模块
去哪学: 官网 https://www.npmjs.com/

  • 常用命令
  1. 初始化项目:npm init -y -> 出现一个package.json 文件(项目配置文件)
  2. 安装模块: npm install 模块名 安装参数(可选 默认开发环境 --save)
  3. 卸载包: uninstall 模块名
  • 安装参数
  1. –save 生产环境需要的模块
  2. –save-dev 开发环境
  3. -g 全局安装 通过 npm config list 查看安装路径(prefix)
  • npm 使用三方模块
  1. 初始化项目
  2. 下载需要的模块
  3. 项目引用
//案例
var mime = require('mime')

console.log(mime.getType('1.js'))// application/javascript

  • 模板引擎 art-template
//案例
var template = require('art-template')

//核心语法 template.render('模块字符串',数据)
//在模块字符串里面替换数据   
//显示数据  {{}}
//循环 {{each 数组}} {{$index}} {{$value}}  {{/each}}
//判断  {{if 条件}} ... {{/if}}     {{if v1}} ... {{else if v2}} ... {{/if}}
//


  • npm 源管理工具

nrm 安装 :npm install nrm -g
查看服务器:nrm ls
切换源:nrm use 服务器名
测速:nrm test

  • npm 自定义script命令
  1. 位置 配置文件package.json scripts
  2. 语法 npm run 名称(名称是script中的属性 属性为start 则不用写run)

中间件

  • http请求中的过滤层(http请求交给方法处理前1,先交给另一个方法处理)
  • 语法 :使用特殊路由 app.use(’/’,function(req,res,next){ })
  • next(): 1. 没有参数,匹配下一个路由 2.next(err) 传递err,向下匹配err的中间件。
    案例(404页面)

会话技术

session

  1. 作用:防,(内部页面未登录不能访问)
  2. (1)安装模块 npm i express-session
    (2)引入
    (3)初始化 app.use(session({
    secret:‘keyboard cat’, //加密
    resave:false, //客服端请求是否覆盖
    saveUninitialzed:true //初始化session存储
    }))
    (4)添加删除session *添加session:req.session.名称=值 *删除session req.session.名称 = null *获取 req.session.名称

你可能感兴趣的:(前端)