web前端 | 博客(一)项目搭建

本文介绍了web前端项目的搭建步骤,包括新建文件结构、使用Express构建服务器、模块化路由、引入开放资源文件、渲染Art-template模板以及模板的优化。在项目中,通过模块化路由实现博客展示和管理界面,使用静态资源并处理模板中的路径问题,确保CSS等文件的正确引用。最后,通过抽取公共部分到子模板,提高模板的复用性和代码组织性。
摘要由CSDN通过智能技术生成

项目搭建

新建文件

public
views
model
route

然后npm init -y

安装所需要的模块
npm install express mongoose art-template express-art-template

添加app.js

使用express构建服务器

app.js是项目入口文件

const express = require('express');
//创建网站服务器
const app = express();
//监听端口
app.listen(80);
console.log('服务器启动成功');

此时使用 nodemon app.js即刻在localhost看到页面更新

模块化路由

在route中新建
home.js
和admin.js
分别对应博客展示界面和博客管理界面
home.js

const express = require('express');

const home = express.Router();

home.get('/', (req, res) => {
  res.send('welcome home');
})

module.exports = home;

admin.js

//引用express框架
const express = require('express');

const admin = express.Router();

admin.get('/', (req, res) => {
  res.send('welcome admin')
})

module.exports = admin;

此时输入localhost/home或者/admin即可看到相应界面

使用开放资源文件

下载到public文件夹中

在app.js中修改代码

//处理路径
const path = require('path')

//开放静态资源文件                
//__dirname传入当前文件的绝对目录
app.use(express.static(path.join(__dirname, 'public')))


localhost/home/default.html可以看到静态资源文件

views中也要有admin和home文件夹,把静态资源文件复制进去,每个文件的后缀名都要改成art

渲染模板

例如,当访问localhost/admin/login,渲染login模板

本来要写绝对路径,但是每一个route都写绝对路径太麻烦了,于是在app.js中进行配置

//告诉express模板所在的位置
app.set('views', path.join(___dirname, 'views'));
//告诉express模板的默认的后缀是什么
app.set('view engine', 'art');
//当渲染后缀为art的模板时,所使用的模板引擎是什么;模板后缀
app.engine('art', require('express-art-template'));

于是在admin.js中,就可以这样写

admin.get('/login', (req, res) => {
  res.render('admin/login')
})

不用写后缀art,因为app中已经配置好了

访问
http://localhost/admin/login
即可看到如图所示登录界面
在这里插入图片描述

模板文件中的相对路径不相对于当前文件的路径,而相对于浏览器中地址的请求路径。
此时地址是http://localhost/admin/login,但请求路径不包括文件,请求路径应该是localhost/admin。模板中的路径是相对于admin的。

此时,由于客户端的请求路径/admin和服务器端public文件夹中存储css文件的文件夹路径(也是/admin)相同,所以css文件可以访问得到。

如果将admin的请求路径改为abc(app.js中改为 app.use('/abc', admin);),那么,在请求localhost/abc时,将无法访问到public中admin下的css文件。外链资源将请求不到。

需要把相对路径改为绝对路径。
即把:

    <link rel="stylesheet" href="lib/bootstrap/css/bootstrap.min.css">
    <link rel="stylesheet" href="css/base.css">

改为

    <link rel="stylesheet" href="/admin/lib/bootstrap/css/bootstrap.min.css">
    <link rel="stylesheet" href="/admin/css/base.css">

其他所有的相对路径也都加上/admin/

总之,在模板文件中要以绝对路径代替相对路径。

优化模板

把页面中公共的部分通过子模版抽离。
admin页面的头部和侧边栏都是一样的,那么头部和侧边栏都要抽离到单独的界面当中去。

在views/admin下新建一个common文件夹,里面建立header.art和aside.art,分别存放头部和侧边栏代码。
把公共部分的代码复制进去。

然后再通过模板语法,把抽离出去代码,用特殊的语法引进来。
{{include './common/header.art'}}来代替头部,用{{include './common/aside.art'}}来代替侧边栏
此处不需要写绝对路径,因为这个路径由模板引擎来解析,而不是通过浏览器来解析。这个相对路径,是相对于当前文件的路径。

在common文件夹中新建layout.art,存放模板文件的骨架。
由于每个页面都有自己的css、js文件,也有自己的主体部分,所以我们要给这些地方挖坑。

使用{{block '坑的名字'}}{{/block}}

在原来的art中把骨架部分删除,用{{extend './common/layout.art'}}引入骨架。

在user.art中,没有自己的css、js,只有自己的主体部分,于是用{{block '坑的名字'}} //主体部分代码 {{/block}}将主体部分括起来。在模板解析的时候,就会引入骨架,并且把骨架中{{block 'main'}} {{/block}}的部分用该主体部分模板填充。

localhost/admin/user中可以看到,页面显示正常。

同理,article-edit.art中多出的脚本文件也用{{block 'script'}}{{/block}} 来代替。

在地址localhost/admin/article-edit,可以看到界面显示正常。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值