1. Web开发概述
传统的动态网站开发需要应用软件
- PHP : Apache + php模块
- java :Tomcat 、Weblogic
Node.js : 不需要应用软件(可以自己实现)
Node.js服务器模型与php服务器模型的区别
2. Node.js实现静态网站功能
2.1 使用http模块初步实现服务器功能
1 | /* |
2.2 实现静态服务器功能
2.2.1 处理请求路径的分发
1 | /* |
2.2.2 响应完整的页面信息
1 | /* |
2.2.3 单独封装方法
1 | const path = require('path'); |
3. 参数传递与获取
3.1 url核心模块
1 | const url = require('url'); |
3.2 get参数获取
1 | const http = require('http'); |
3.3 post参数获取
1 | const querystring = require('querystring'); |
3.4 案例:登录验证功能
1 |
|
1 | /* |
4. 动态网站开发
创建服务器实现动态网站效果
1 | /* |
1 | { |
1 |
|
1 |
|
5. 模板引擎
模板引擎是为了使用户界面与业务数据(内容)分离而产生的,它可以生成一个标准的HTML结构。
模板+数据—>静态页面片段
流行的模板引擎:
5.1 artTemplate
5.1.1 特性
- 性能卓越,执行速度通常是 Mustache 与 tmpl 的 20 多倍(性能测试)
- 支持运行时调试,可精确定位异常模板所在语句(演示)
- 对 NodeJS Express 友好支持
- 安全,默认对输出进行转义、在沙箱中运行编译后的代码(Node版本可以安全执行用户上传的模板)
- 支持
include
语句 - 可在浏览器端实现按路径加载模板(详情)
- 支持预编译,可将模板转换成为非常精简的 js 文件
- 模板语句简洁,无需前缀引用数据,有简洁版本与原生语法版本可选
- 支持所有流行的浏览器
5.1.2 安装
1 | npm install art-template |
5.1.3 快速上手
5.1.3.1 编写模板
使用一个type="text/html"
的script
标签存放模板:
1 | <script id="test" type="text/html"> |
5.1.3.2 渲染模板
1 | var data = { |
5.1.4 模板语法
有两个版本的模板语法可以选择。
5.1.4.1 简洁语法
推荐使用,语法简单实用,利于读写。
1 | { {if admin} } |
5.1.4.2 原生语法
1 | < % if (admin){ % > |
5.1.5 方法
5.1.5.1 template(id, data)
根据 id 渲染模板。内部会根据document.getElementById(id)
查找模板。
如果没有 data 参数,那么将返回一渲染函数。
1 | { {if user} } |
1 | let template = require('art-template'); |
5.1.5.2 template.compile
(source, options)
将返回一个渲染函数。
1 | let tpl = '<ul>{ {each list as value} }<li>{ {value} }</li>{ {/each} }</ul>'; |
5.1.5.3 template.render
(source, options)
将返回渲染结果。
1 | let tpl = '<ul>{ {each list} }<li>{ {$index} }-------------{ {$value} }</li>{ {/each} }</ul>'; |
5.1.5.4 template.helper
(name, callback)
添加辅助方法。
5.1.5.5 template.config
(name, value)
更改引擎的默认配置。
字段 | 类型 | 默认值 | 说明 |
---|---|---|---|
openTag | String | '{ {' |
逻辑语法开始标签 |
closeTag | String | "} }" |
逻辑语法结束标签 |
escape | Boolean | true |
是否编码输出 HTML 字符 |
cache | Boolean | true |
是否开启缓存(依赖 options 的 filename 字段) |
compress | Boolean | false |
是否压缩 HTML 多余空白字符 |
6. Express
基于Node.js平台,快速、开放、极简的 Web 开发框架
6.1 Express之HelloWorld
1 | var express = require('express'); |
6.2 初步实现服务器功能
1 | const express = require('express'); |
6.3 托管静态文件
1 | const express = require('express'); |
6.4 路由
根据请求路径和请求方式进行路径分发处理
1 | http的常用请求方式: |
1 | const express = require('express'); |
myrouter.js
1 | const express = require('express'); |
6.5 中间件
就是处理过程中的一个环节(本质上就是一个函数)
1 | const express = require('express'); |
6.5.1 中间件的挂载方式和执行流程
1 | const express = require('express'); |
6.6 参数处理
1 | const express = require('express'); |
6.7 模板引擎整合
1 | const express = require('express'); |
list.art
1 | <!DOCTYPE html> |
7. Mysql API
7.1 封装操作数据库的通用api
1 | const mysql = require('mysql'); |
7.2 测试通用api
1 | const db = require('./db.js'); |
8. 后台接口开发
8.1 json接口
1 | // 指定api路径 allBooks (json接口) |
8.2 jsonp接口
1 | // 修改jsonp回调函数传递参数的key |
8.3 restful接口
1 | /* |
9. 从服务器主动发送请求
1 | /* |
9.1 查询数据
1 | const http = require('http'); |
9.2 添加数据
1 | const http = require('http'); |
9.3 根据id去查询数据
1 | const http = require('http'); |
9.4 编辑数据
1 | const http = require('http'); |
9.5 删除数据
1 | const http = require('http'); |
10. 调用第三方接口
1 | const http = require('http'); |
-------------本文结束感谢您的阅读-------------
本文作者:
Wgy
本文标题: Node.js(二)
本文链接: https://wgy1993.gitee.io/archives/543e3a79.html
版权声明: 本作品采用 CC BY-NC-SA 4.0 进行许可。转载请注明出处!
本文标题: Node.js(二)
本文链接: https://wgy1993.gitee.io/archives/543e3a79.html
版权声明: 本作品采用 CC BY-NC-SA 4.0 进行许可。转载请注明出处!
