Node 路由配置+ejs模板+传递及渲染值

一、基本路由配置

App.js:

var http=require("http");
var url=require("url");
http.createServer(function(req,res){
    //根据路由加载页面
    var path=url.parse(req.url).pathname;
    if(path=="/"){
        res.end("index.html");
    }
    else if(path=="/login"){
        res.end("login.html");
    }
    else{
        res.end("regest.html");
    }
}).listen(8100);

二、ejs模板

EJS 是一套简单的模板语言,可以利用普通的 JavaScript 代码生成 HTML 页面。

  1. 安装:cnpm install ejs --save

  2. 使用:

var ejs = require('ejs'),
    people = ['Sam', 'Alice', 'Mary'],
    html = ejs.render('<%= people.join(", "); %>', {people: people});
  1. 实例
<% if (res) { %>
  <h2><%= res.name %></h2>
<% } %>
var template = ejs.compile(str, options);
template(data);  // 输出绘制后的 HTML 字符串

ejs.render(str, data, options);  // 输出绘制后的 HTML 字符串

ejs.renderFile(filename, data, options, function(err, str){
    // str => 输出绘制后的 HTML 字符串
});
  1. 参数

在这里插入图片描述

  1. 标签

在这里插入图片描述

  1. 包含(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>

三、传递渲染值

  1. 基本路由配置完成之后,根据路由导出页面渲染,安装ejs模板,自动生成package.json文件以及依赖包,使用的时候需要去导入

  2. 常用标签:

<%= %> 绑定标签数据   
<% 脚本 %>   
<%- include("./index.ejs")%>  
<%_ %> 绑定数据去除前面多余的空格
  1. 示例

App.js:

var http=require("http");
var url=require("url");
var ejs=require("ejs");
http.createServer(function(req,res){
    //根据路由加载页面
    var path=url.parse(req.url).pathname;
    if(path=="/"){
        //ejs模板  渲染单个变量
        var name="yian"
        ejs.renderFile("assets/index.ejs",{
            name:name
        },function(err,str){
            res.end(str);
        });
    }
    else if(path=="/login"){
        //ejs模板  渲染多个变量
        var arr=[1,2,3,4,5,6];
        ejs.renderFile("assets/login.ejs",{
            array:arr
        },function(err,str){
            res.end(str);
        });
    }
    else{
        //ejs模板  绑定json数据
        var stu=[
            {name:"kun",age:20},
            {name:"ikun",age:21}
        ]
        ejs.renderFile("assets/regest.ejs",{
            student:stu
        },function(err,str){
            res.end(str);
        });
    }
}).listen(8100);

index.ejs:

<body>
    <p>我是首页</p>
    <p>ejs模板绑定数据</p>
    <p><%=name%></p>
    <%- include('./moban.ejs')%>
</body>

login.ejs:

<body>
    <p>我是注册界面</p>
    <p>ejs模板绑定数据</p>
    <ul>
        <%for(var i=0;i<array.length;i++){%>
            <li><%=array[i]%></li>
        <%}%>
        <%array.forEach(function(val,index){%>
            <li><%=val%></li>
        <%})%>
    </ul>  
</body>

regest.ejs:

<body>
    <p>我是登录界面</p>
    <p>ejs模板绑定数据</p>
    <div>
        <%for(var i=0;i<student.length;i++){%>
            <div><%=student[i].name%>------<%=student[i].age%></div>
        <%}%>
    </div>
</body>

moban.ejs:

<div>
    <p>我是模板页面</p>
    <p><%=name%></p>
</div>

目录:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的示例代码,实现了一个基本的博客系统。 首先,我们需要创建一个新的node.js项目,并在项目中安装express和mysql模块。 ```bash mkdir blog cd blog npm init -y npm install express mysql --save ``` 然后,我们需要创建一个app.js文件,并在其中配置express应用程序。 ```javascript const express = require('express'); const mysql = require('mysql'); const app = express(); // 配置中间件 app.use(express.urlencoded({ extended: false })); app.use(express.json()); app.use(express.static('public')); // 连接数据库 const db = mysql.createConnection({ host: 'localhost', user: 'root', password: 'password', database: 'blog' }); db.connect((err) => { if (err) { console.error('error connecting: ' + err.stack); return; } console.log('connected as id ' + db.threadId); }); // 设置由 app.get('/', (req, res) => { db.query('SELECT * FROM posts', (err, results) => { if (err) throw err; res.render('index.ejs', { posts: results }); }); }); app.get('/post/:id', (req, res) => { const id = req.params.id; db.query('SELECT * FROM posts WHERE id = ?', [id], (err, results) => { if (err) throw err; res.render('post.ejs', { post: results[0] }); }); }); app.get('/create', (req, res) => { res.render('create.ejs'); }); app.post('/create', (req, res) => { const title = req.body.title; const content = req.body.content; db.query('INSERT INTO posts SET ?', { title, content }, (err, results) => { if (err) throw err; res.redirect('/'); }); }); // 启动服务器 app.listen(3000, () => { console.log('Server started on port 3000'); }); ``` 在上面的代码中,我们使用了ejs模板引擎来渲染HTML页面。我们需要在项目中创建一个views文件夹,并在其中创建index.ejs、post.ejs和create.ejs文件。 index.ejs: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Blog</title> </head> <body> <h1>Blog</h1> <ul> <% for (let post of posts) { %> <li> <a href="/post/<%= post.id %>"><%= post.title %></a> </li> <% } %> </ul> <a href="/create">Create a new post</a> </body> </html> ``` post.ejs: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title><%= post.title %></title> </head> <body> <h1><%= post.title %></h1> <p><%= post.content %></p> <a href="/">Back to index</a> </body> </html> ``` create.ejs: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Create a new post</title> </head> <body> <h1>Create a new post</h1> <form action="/create" method="POST"> <input type="text" name="title" placeholder="Title"> <textarea name="content" placeholder="Content"></textarea> <button type="submit">Create</button> </form> </body> </html> ``` 最后,我们需要在项目中创建一个public文件夹,并在其中创建一个style.css文件,来为页面添加样式。 ```css body { font-family: Arial, sans-serif; } h1 { font-size: 32px; font-weight: bold; } ul { list-style: none; padding: 0; } li { margin-bottom: 10px; } a { text-decoration: none; color: blue; } input[type="text"], textarea { display: block; width: 100%; margin-bottom: 10px; } button[type="submit"] { display: block; margin-top: 10px; } ``` 以上就是一个简单的node.js+express+mysql实现博客系统的示例代码,可以根据实际情况进行调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值