EJS | Yarn | MySQL

课程大纲

主要内容: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/

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容