nodejs:express框架,ejs模块,动态渲染,中间件,路由,界面跳转,终端【诗书画唱】
前言:Visual Studio Code简称为vscode,是一款由微软研发的免费、开源的跨平台文本代码编辑器,也是目前前端开发几乎完美的软件开发工具。现在使用Vscode的人越来越多,凭借着免费、开源、跨平台的特点收获了一大批粉丝。界面好看,插件也非常多。
这篇专栏写了一天半的时间!求看官们给个三连!
动态渲染的个人理解:就是模板(比如表格,无序列表等等的模板)不变,内容可变的代码。

内容查看:
创建Visual Studio code项目时的注意事项
告诉你什么是终端
自定义模块:在js文件中调用另外一个js文件中的函数的代码例子
创建express项目的代码例子(更好的自定义要跳转界面的app.get的方法,就是配置路由)
配置路由就是配置访问地址跳转到对应的内容,界面等等
require出来的基本都是function函数类型
doget和dopost的区别
使用express框架访问默认的index.html的代码例子(有局限性的跳转的app.use的方法,我展示的例子中可能只能跳转默认的index.html界面)
下载ejs模块实现动态渲染,中间件,界面跳转

本期必看
1、搭建express框架
2、学会设置路由
3、学会使用中间件
4、学会使用动态渲染:
创建一个数组,包含有商品(id,名称价格和单位)的信息,创建一个名为pro.html的模板,根据这个模板可以显示所有的商品为一个表格。
let pros = [{id:1,name:'德芙巧克力',price:7.5,unit:'块'}];
将数组中的数据传到pro.html模板上去,将它渲染成一个表格。
个人注释:我暂时把“动态渲染”理解成“由js和html代码的拼接实现的可方便改变内容的模板代码”。
多去写个人注释会对自己更加的方便。
部分学习目标:
1、自定义模块:在js文件中调用另外一个js文件中的函数
2、express框架

单词:


个人总结的注意事项:



教程视频学习记录



中间件要写在路由配置前面。




set方法类似于setattribute方法,setattribute方法在JavaWeb中传参等等时会常常用到。而set方法在express框架的传参中可能常常用到。










1.0变1.1说明是进行了小的更新,变2.0说明进行了大的更新
创建Visual Studio code项目时的注意事项


npm install express -g
下载express模块
【-g就是全局的意思,可以达到一劳永逸,以后创建express的项目后就不用再下express了,不加-g以后就要再下载】

告诉你什么是终端

其实终端可以当作cmd来用cmd命令来下载ejs等的模块,
在VScode中的终端可以理解为cmd命令窗口



自定义模块:在js文件中调用另外一个js文件中的函数的代码例子




//demo.js
//引入当前文件夹下的module.js中的代码
//./表示demo.js文件所在的当前文件夹
//使用require导入js文件时,可以将.js后缀省略掉
let m = require('./module');
let num = m.add(3,4);
console.log(num);
console.log(m.msg);


//module.js
//exports是一个内置对象,不用定义就可以使用
//表示需要导出的函数和属性的对象
//导出一个函数
exports.add = function(a,b){
return a + b;
}
//导出一个属性
exports.msg = '给诗书画唱三连!Hello world!\n'
+'看到这句话说明demo.js成功调用module.js中的内容!';


创建express项目的代码例子(更好的自定义要跳转界面的app.get的方法,就是配置路由)

doget和dopost的区别


1
npm install express -g
下载express模块

2

{
"name":"helloapp",
"description":"我的第一个express项目",
"version":"1.0",
"private":true,
"dependencies":{
"express":"4.x"
}
}


let express=require("express");
let app=express();
//app.use(express.static(__dirname+"/public"));
app.get("/",function(requst,response){
response.send("欢迎访问本网站!")
});
app.listen(8888);
console.log("服务器启动完毕!访问地址:http://127.0.0.1:8888")









require出来的基本都是function函数类型

使用express框架访问默认的index.html的代码例子(有局限性的跳转的app.use的方法,我展示的例子中可能只能跳转默认的index.html界面)


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>express框架演示</title>
</head>
<body>
<h1>Hello world</h1>
</body>
</html>


let express=require("express");
let app=express();
app.use(express.static(__dirname+"/public"));
// app.get("/",function(requst,response){
// response.send("欢迎访问本网站!")
// });
app.listen(8888);
console.log("服务器启动完毕!访问地址:http://127.0.0.1:8888")


下载ejs模块实现动态渲染,中间件,界面跳转

npm install ejs -g


//routes/index.js
//专门用来配置路由的文件
module.exports = function(app){
//http://127.0.0.1:8888/
app.get('/',function(req,res){
//在页面上显示欢迎访问本网站
//res.send('<h1>欢迎访问本网站</h1>');
//设置显示在模板上的数据
const a = [
{title:'百度',url:'http://www.baidu.com',time:'2021-5-1'},
{title:'淘宝',url:'http://www.taobao.com',time:'2021-11-11'}
];
//根据data.html的模板内容来显示页面
res.render('data',{webData: a,tt: '动态传递的标题'});
});
//http://127.0.0.1:8888/tologin
app.get('/tologin',function(req,res){
res.send('<h1>登录页面</h1>');
});
//http://127.0.0.1:8888/reg
app.get('/reg',function(req,res){
res.send('<h1>注册页面</h1>');
});
}


<html>
<head></head>
<body>
<h1><%=tt %></h1>
<ul>
<%for(let i = 0;i < webData.length;i ++){ %>
<li>
<a href='<%=webData[i].url %>'>
<%=webData[i].title %>
</a>
<%=webData[i].time %>
</li>
<%} %>
</ul>
</body>
</html>


//index.js
//导入express模块
let express = require('express');
//导入ejs模块
let ejs = require('ejs');
//获取框架执行对象
let app = express();
//渲染根目录下的html文件
//如果不执行下面的这句代码,就会默认渲染views目录下的html文件
//app.set('views',__dirname);
//以html语法规则来解析指定的html页面
app.set('view engine','html');
app.engine('.html',ejs.__express);
//__dirname表示根目录
//public表示根目录下的public文件夹
//设置public/index.html为默认首页
//app.use(express.static(__dirname + '/public'));
//添加中间件处理程序
app.use(function(req,res,next){
console.log('中文乱码处理');
//继续执行后面的中间件
next();
});
app.use(function(req,res,next){
console.log('日志处理');
next();
});
//http://127.0.0.1:8888/login
//当输入的访问地址中匹配有/login时才执行这个中间件的代码
app.use('/login',function(req,res,next){
console.log('会话处理');
})
//导入路由配置方法1:
//let routes = require('./routes/index');
//routes(app);
//导入路由配置方法2(更简单的写法):
let routes = require('./routes/index')(app);
//设置服务器的端口号
app.listen(8888);
console.log('服务器启动完毕,访问地址http://127.0.0.1:8888/');








本期必看
1、搭建express框架
2、学会设置路由
3、学会使用中间件
4、学会使用动态渲染:
创建一个数组,包含有商品(id,名称价格和单位)的信息,创建一个名为pro.html的模板,根据这个模板可以显示所有的商品为一个表格。
let pros = [{id:1,name:'德芙巧克力',price:7.5,unit:'块'}];
将数组中的数据传到pro.html模板上去,将它渲染成一个表格。

module.exports = function(app){
app.get('/pro',function(req,res){
let pros = [{id:1,name:'德芙巧克力',price:7.5,unit:'块'},
{id:2,name:'德芙巧克力2',price:7.6,unit:'块'},
{id:3,name:'德芙巧克力3',price:7.7,unit:'块'}];
res.render('proViews',{webData: pros});
//——>这里的proViews指的是views文件夹下的proViews.html,就是要跳转的界面
});
}


<html>
<head></head>
<body>
<!--{id:2,name:'德芙巧克力2',price:7.6,unit:'块'} -->
<table border="1px">
<tr> <th>商品编号</th> <th>商品名称</th>
<th>商品价格</th> <th>商品单位</th></tr>
<%for(let i = 0;i < webData.length;i ++){ %>
<tr>
<td>
<%=webData[i].id %>
</td>
<td>
<%=webData[i].name%>
</td>
<td>
<%=webData[i].price%>
</td>
<td>
<%=webData[i].unit%>
</td>
</tr>
<%} %>
</table>
</body>
</html>


let express = require('express');
let ejs = require('ejs');
let app = express();
app.set('view engine','html');
app.engine('.html',ejs.__express);
//个人注释:“./routes/pro”指的是routes文件夹下的pro.js文件:
let routes = require('./routes/pro')(app);
//——>这段代码不可以少,其余部分基本是固定的
app.listen(8888);
console.log('服务器启动完毕,访问地址http://127.0.0.1:8888/pro');
//——>这个访问路径和routes文件夹下的pro.js文件中用get设置的访问路径有关


