课程大纲
主要内容:ejs模板语法,服务器渲染练习
1。yarn 的安装 及 使用。
全局安装 Yarn 的最新版本:
npm install -g yarn
2。ejs模板语法(需要安装ejs模块),母板定义(需要安装ejs-mate模块),热启动。
<%= EJS %>
高效的嵌入式 JavaScript 模板引擎。
特性
快速编译与绘制输出
简洁的模板标签:<% %>
自定义分割符(例如:用 <? ?> 替换 <% %>)
引入模板片段
同时支持服务器端和浏览器 JS 环境
JavaScript 中间结果静态缓存
模板静态缓存
兼容 Express 视图系统
安装
利用 NPM 安装 EJS 很简单。
$ npm install ejs
用法
将模板字符串和一些数据作为参数传递给 EJS,Duang,HTML 出来了。
let ejs=require('ejs'),
people=['geddy','neil','alex'],
html=ejs.render('<%= people.join(", ");
%>',
{people:people});
浏览器支持
从这里下载 最新的浏览器版本,然后引入页面即可。
<scriptsrc="ejs.js"></script><script>letpeople=['geddy','neil','alex'],html=ejs.render('<%= people.join(", "); %>',{people:people});</script>
文档
实例
<% if (user) { %><h2><%= user.name %></h2><% } %>
用法
lettemplate=ejs.compile(str,options);template(data);// => 输出渲染后的 HTML 字符串ejs.render(str,data,options);// => 输出渲染后的 HTML 字符串ejs.renderFile(filename,data,options,function(err,str){// str => 输出渲染后的 HTML 字符串});
参数
cache 缓存编译后的函数,需要指定 filename
filename 被 cache 参数用做键值,同时也用于 include 语句
context 函数执行时的上下文环境
compileDebug 当值为 false 时不编译调试语句
client 返回独立的编译后的函数
delimiter 放在角括号中的字符,用于标记标签的开与闭
debug 将生成的函数体输出
_with 是否使用 with() {} 结构。如果值为 false,所有局部数据将存储在 locals 对象上。
localsName 如果不使用 with ,localsName 将作为存储局部变量的对象的名称。默认名称是 locals
rmWhitespace 删除所有可安全删除的空白字符,包括开始与结尾处的空格。对于所有标签来说,它提供了一个更安全版本的 -%> 标签(在一行的中间并不会剔除标签后面的换行符)。
escape 为 <%= 结构设置对应的转义(escape)函数。它被用于输出结果以及在生成的客户端函数中通过 .toString() 输出。(默认转义 XML)。
outputFunctionName 设置为代表函数名的字符串(例如 'echo' 或 'print')时,将输出脚本标签之间应该输出的内容。
async 当值为 true 时,EJS 将使用异步函数进行渲染。(依赖于 JS 运行环境对 async/await 是否支持)
标签含义
<% '脚本' 标签,用于流程控制,无输出。
<%_ 删除其前面的空格符
<%= 输出数据到模板(输出是转义 HTML 标签)
<%- 输出非转义的数据到模板
<%# 注释标签,不执行、不输出内容
<%% 输出字符串 '<%'
%> 一般结束标签
-%> 删除紧随其后的换行符
_%> 将结束标签后面的空格符删除
包含(include)
通过 include 指令将相对于模板路径中的模板片段包含进来。(需要提供 'filename' 参数。) 例如,如果存在 "./views/users.ejs" 和 "./views/user/show.ejs" 两个模板文件,你可以通过 <%- include('user/show'); %> 代码包含后者。
你可能需要能够输出原始内容的标签 (<%-) 用于 include 指令,避免对输出的 HTML 代码做转义处理。
<ul><% users.forEach(function(user){ %> <%- include('user/show', {user: user}); %> <% }); %></ul>
自定义分隔符
可针对单个模板或全局使用自定义分隔符:
let ejs=require('ejs'),users=['geddy','neil','alex'];// 单个模板文件ejs.render('<?= users.join(" | "); ?>',{users:users},{delimiter:'?'});// => 'geddy | neil | alex'// 全局ejs.delimiter='$';ejs.render('<$= users.join(" | "); $>',{users:users});// => 'geddy | neil | alex'
缓存
EJS 附带了一个基本的进程内缓存,用于缓在渲染模板过程中所生成的临时 JavaScript 函数。 通过 Node 的 `lru-cache` 库可以很容易地加入 LRU 缓存:
letejs=require('ejs'),LRU=require('lru-cache');ejs.cache=LRU(100);// 具有 100 条内容限制的 LRU 缓存
如果要清除 EJS 缓存,调用 ejs.clearCache 即可。如果你正在使用的是 LRU 缓存并且需要设置不同的限额,则只需要将 `ejs.cache` 重置为 一个新的 LRU 实例即可。
自定义文件加载器
默认的文件加载器是 fs.readFileSync,如果你想要的自定义它, 设置ejs.fileLoader 即可。
letejs=require('ejs');letmyFileLoader=function(filePath){return'myFileLoader: '+fs.readFileSync(filePath);};ejs.fileLoader=myFileLoad;
使用此功能,您可以在读取模板之前对其进行预处理。
布局(Layouts)
EJS 并未对块(blocks)提供专门的支持,但是可以通过 包含页眉和页脚来实现布局,如下所示:
<%-include('header');-%><h1>Title</h1><p>My page</p><%-include('footer');-%>
客户端支持
从latest release 链接下载 ./ejs.js 或 ./ejs.min.js 文件。或者,你可以 clone 这个仓库并 通过执行 jake build 自己编译(或者执行 $(npm bin)/jake build,如果 jake 不是安装在全局环境的话)。
在页面中包含上面的任意一个文件,然后 ejs 就全局可用了
示例
<div id="output"></div><script src="ejs.min.js"></script><script>letpeople=['geddy','neil','alex'],html=ejs.render('<%= people.join(", "); %>',{people:people});// With jQuery:$('#output').html(html);// Vanilla JS:document.getElementById('output').innerHTML=html;</script>
注意事项
大多数情况下,EJS 将会按照我们的预期运行; 但是, 仍然需要注意:
显然, 如果你没有文件系统的访问权限, `ejs.renderFile` 将无法正常工作。
相同的原因, 除非为 include 设置一个回调函数,否则 include 无法正常工作。如下所示:
letstr="Hello <%= include('file', {person: 'John'}); %>",fn=ejs.compile(str,{client:true});fn(data,null,function(path,d){// include callback// path -> 'file'// d -> {person: 'John'}// Put your code here// Return the contents of file as a string});// returns rendered string
在 Express 中使用 EJS
3。服务器渲染练习。
4。操作数据库mysql。
文档:
https://ejs.bootcss.com/
https://www.npmjs.com/package/ejs-mate
phpstudy:
https://www.xp.cn/
知识点总结
1. 什么是yarn? yarn的安装及使用?
yarn 是快速, 可靠, 安全的 依赖管理工具。Yarn 是一个软件包管理器,还可以作为项目管理工具。
安装方式:
a. 下载地址:http://yarnpkg.top/ 下载完成,双击安装即可以。
b. 使用命令安装: npm i yarn -g
2. yarn和npm的区别?(了解)
yarn速度快,并行安装,且如果以前安装过模块,会使用离线模式,不再从网络上下载了。
yarn安装版本统一
详细区别:
https://www.jianshu.com/p/254794d5e741
3. 回顾一下安装,卸载模块包的方式?
npm install XXX --save | npm i XXX -S
npm install XXX --save-dev | npm i XXX -D
npm install XXX -g | npm i XXX -g
cnpm intall XXX --save | cnpm i XXX -S
cnpm install XXX --save-dev | cnpm i XXX -D
cnpm install XXX -g | cnpm i XXX -g
即:
npm|cnpm install|i XXX --save-dev|-D|--save|-S|--global|-g
--save-dev === -D #安装开发依赖,开发过程中模块有用,上线模块包没用
--save === -S #安装生产依赖,项目上线模块继续有用。
--global === -g #全局安装,一次安装,到处使用。
卸载只需要把 install 换 uninstall
yarn add XXX 添加模块包
yarn remove XXX 移除模块包
yarn upgrade XXX 更新模块包
yarn init 创建项目清单
yarn | yarn install 根据项目清单重新安装所有的依赖。
热启动:node项目源码修改了,不需要重新服务器(npm start)
4. 热启动模块nodemon和supervisor
nodemon模块:npm install nodemon -g
https://www.npmjs.com/package/nodemon
supervisor模块:npm install supervisor -g
https://www.npmjs.com/package/supervisor
5. ejs语法?
<%= 变量 %>
<%- 变量 %>
<% 脚本 %> 判断,循环等
<%- include(路径, 传递数据) %>
6. mysql安装?
a. 官网下载:https://www.mysql.com/downloads/
b. 使用phpstudy:https://www.xp.cn/download.html
7. 数据库理论?(了解)
数据库:数据的仓库。
如何存储数据?表格(行和列),json集合(文档,字段)
关系型数据库:每一个数据表都有行和列组成。
代表产品:Oracle甲骨文公司,SQLServer微软,MySQL甲骨文公司
非关系型数据:每一个集合有文档和字段。每一个文档的字段不必相同。
mongodb, noSQL
name age sex
zs 20 男
ls 18 女
[
{name: 'zs', age: 20, sex: '男'},
{name: 'ls', age: 21, sex: '女', birthday: '2022-02-02'}
]
数据库中的对象?数据库database, 表table, 行row,列column
数据库规范?三个范式
数据库:https://wenku.baidu.com/view/880541ed4328915f804d2b160b4e767f5acf803e.html
8. mysql语法?
https://dev.mysql.com/doc/refman/8.0/en/