位置: 编程技术 - 正文

从零学习node.js之利用express搭建简易论坛(七)(node.js快速入门)

编辑:rootadmin

推荐整理分享从零学习node.js之利用express搭建简易论坛(七)(node.js快速入门),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:怎么学node.js,node.js怎么学,node.js快速入门,node.js怎么学,node.js快速入门,node.js入门教程,node.js自学,node.js自学,内容如对您有帮助,希望把文章链接给更多的朋友!

一、应用生成器

使用上节学习到express的知识,我们也可以从0开始,一步步把系统搭建起来。不过express中还有一个应用生成器,使用这个应用生成器可以快速的创建一个应用的框架,然后我们再在这个框架中完善我们需要的内容。首先安装应用生成器:

运行express --version若能正常输出版本号,则安装成功。

我们的论坛名称可以为node_express_forum,然后使用express创建一个框架:

运行后,生成器会在这个目录下生成几个目录和文件:

已经生成成功。进入到这个目录:

我们来看下生成的这个框架,方便知道后面怎么进行填充。

打开package.json后,我们看到还需要再安装几个模块才能运行:

好了,到现在框架已搭建完毕,我们来运行一下:

然后在浏览器中输入.0.0.1:,就可以看到了:Express Welcome to Express。

二、准备工作

基本框架已经创建好了,现在开始我们论坛的准备工作。这里我们的准备工作有3个:模板引擎,模型,数据库,路由。

2.1 模板引擎

express里默认使用的模板引擎是jade,不过我们也可以选择其他的模板引擎,我这里选择了ejs,因为感觉ejs更像是个html文件,方便维护,当然,每个人都有自己的喜好。

然后在app.js中修改模板引擎:

这里我会将views目录中的.jade文件清空,后续使用.ejs编写模板。

2.2 模型

这里我们说的模型是指MVC中的M,主要是进行数据库的连接和操作。创建models目录用来存放文件。

2.3 数据库

我们使用mysql数据库来存放数据,数据库名称可以叫做forum。里面有3张表:user, list, reply。

user表(用户)的字段有: id, username, password, regtime list表(主题)的字段有: id, uid(用户id), title, content, createtime reply表(回复)的字段有: id, pid(主题id), uid(用户id), content, createtime

2.4 路由

上节我们是使用app.use()或app.get()等方式来实现路由,同时,express还提供了express.Router类来创建模块化。可挂载的路由。Router 实例是一个完整的中间件和路由系统,因此常称其为一个 “mini-app”。

在routes/user.js中(这里我将其users.js改为了user.js):

然后在app.js中加载路由模块:

这样就可以访问/user和/user/reg页面了。如果需要增加其他的路由,则依照此方式创建添加即可。

三、注册与登录

我们论坛的功能:注册、登录、发布主题和回复主题。这4个功能的实现都需要连接数据库。

3.1 数据库连接

引入mysql模块,然后使用mysql.createPool()创建连接:

在models目录下创建db.js,其他需要操作数据库的,首先引入db.js:

3.2 注册功能

注册功能的流程我们非常熟悉了:

加载注册页面; 用户输入数据后提交; 处理表单数据然后进行数据库操作

我们在routes/user.js中创建一个reg的get方式的路由用来加载注册页面:

在views目录下创建reg.ejs:

运行程序,并用浏览器访问.0.0.1:/user/reg,注册页面就出来了。

然后再在routes/user.js中创建一个reg的post方式的路由用来处理提交过来的数据,post方式过来的数据并不能使用req.query变量获取,而应该使用req.body:

从零学习node.js之利用express搭建简易论坛(七)(node.js快速入门)

凡是设计到数据库处理的,我们都将其放到models中。这里,我们在models中创建一个user.js:

我们将检测用户名和插入数据两个功能放到一起处理了,实际应用中,最好是在用户提交数据之前就对用户名进行检测。注册功能的model写好之后,就可以调用了,承接上面的代码,从数据库处理接着编写。

页面若跳转到首页,则说明注册成功了,查看下数据库是否将数据正确的插入了。

到这里,注册功能完成了,完成了吗?还没呢,我们这里注册完成后仅仅是跳转到了首页,还缺少的操作是:

若直接跳转到首页,则默认是已经登录了,这里就需要记录用户的登录状态; 若不跳转到首页,则注册成功后要跳转到登录页面让用户登录

我们这里使用第1种方式,稍后讲解如何记录用户的登录状态。

3.2 登录功能

登录过程与注册是非常类似的,而且比注册还要简单,只需要查询数据库中是否存在对应的用户名和密码即可。

首先编写一个登录页面:

然后在model/user.js中添加上对数据库的登录操作:

最后在routes/user.js中添加上登录的路由:

登录功能也编写好了。

3.3 保存登录状态

我们通常是使用session来保存用户的登录状态,express框架没有对session处理的功能,需要我们引入额外的模块express-session:

然后在app.js中引用:

设置完成后,就可以使用session保存数据了。以登录成功后保存数据为例:

还有一个问题:如何把session中的数据传递给模板呢,比如没有登录时,显示“注册,登录”连接,登录后显示“用户名,登录”信息。

在app.js中添加:

然后在模板中就可以使用user变量了:

四、首页及详情页

我们在首页能够展示主题列表并能发表主题,点击链接进入详情页后能该主题进行回复。当然发表主题和对主题进行回复都是在已经登录的状态进行的。

4.1 首页

在models目录创建list.js,从数据库中获取主题列表:

在routes中的index.js中调用getIndexList获取数据,并调用index.ejs模板:

在views/index.ejs创建首页模板:

展示数据完毕。

4.2 发表主题

我们在首页上添加了可以输入标题和内容的两个输入窗口,可以使用ajax的方式提交数据。

这里的提交接口是/list/addtopic,因此我们需要再创建一个这样的路由:在routes目录下创建list.js:

这里用到了list_m.addTopic,因此需要在models/list.js中添加 addTopic 方法:

4.3 详情页

在首页列表中,可以看到,我们将详情页的链接设置为了/list/1.html的方式,也可以设置成其他的方式(比如 /list&#;pid=1 等),只要设置好路由就行。

在详情页中需要获取到这个主题的详细信息和对这个主题的回复,因此在list_m中:

然后在路由中进行调用,这里使用async简单的控制了下两个异步的流程问题:

稍微解释下async.parallel的功能,下节我们会详细的讲解。 async.parallel([f1, f2, f3,…, fn], fb); 是f1到fn所有的异步都执行完了就会执行fb函数。这里我们是主题的详情和对主题的回复都请求完成了,就可以调用模板渲染。

对主题的回复功能可以自己实现一下。

总结

写着写着就发现篇幅这么大了,而且充斥了大量的代码,需要我们细心的理解。下面给出详细的示例代码,大家可以下载学习,希望本文的内容对大家能有所帮助。

下载地址:点击这里

node.js入门学习之url模块 前言今天主要记录的是关于node.js里面的一个简单的模块,url模块。这个url的模块要使用的话需要先引入。若只是在命令行里比如cmd或gitbash等使用url这个

关于Sequelize连接查询时inlude中model和association的区别详解 前言大家都知道在使用Sequelize进行关系模型(表)间连接查询时,我们会通过model/as来指定已存在关联关系的连接查询模型,或是通过association来直接指

利用Node.js+Koa框架实现前后端交互的方法 前言对于一个前端工程师来说不仅仅要会前端的内容,后端的技术也需要熟练掌握。今天我就要通过一个案例来描述一下前端是如何和后端进行数据交

标签: node.js快速入门

本文链接地址:https://www.jiuchutong.com/biancheng/376388.html 转载请保留说明!

上一篇:从零学习node.js之express入门(六)(node js入门)

下一篇:node.js入门学习之url模块(node.js快速入门)

  • 上年度已交房产税减免如何做账务处理
  • 企业代扣代缴个人所得税
  • 太阳能发电开票编码
  • 电子汇票提示付款撤销
  • 股份有限公司个人所得税缴纳比例
  • 个税免税收入怎么进行更正申报
  • 新成立公司申报流程
  • 自己申报个人所得税需要补缴,必须自己申报自己补缴吗
  • 甲供材能否开具增值税专用发票
  • 支付佣金和手续费一样吗
  • 房地产开发企业增值税税率
  • 转让不动产增值税计算
  • 外购货物用于集体福利属于什么
  • 其他货币资金贷方是增加还是减少
  • 补助属不属于工资
  • 车船税没有发票可以税前扣除吗
  • 出口退税进项税额转出是什么意思
  • 原材料什么时候结转成本
  • 购买职工宿舍用品账务处理
  • 收到对方的预付款,需要多久开发票
  • 建安业核定征收利润率
  • 金税盘没票了
  • 增值税发票税率是星号
  • 关于企业所得税若干优惠政策的通知
  • 企业财务负责人和办税人哪个责任大
  • 销售已作进项税转出的固定资产怎样缴税?
  • 税金计提多了怎么办
  • 资本公积有哪些科目
  • 主营业务成本净额计算公式
  • php add
  • win11无法安装程序包
  • mac怎么快速显示桌面
  • linux怎么用微信
  • 销售合同怎么计算印花税
  • vue3全局属性
  • 企业年金在缴费阶段涉及的税种包括
  • 审计项目种类
  • 递延所得税负债借贷方向
  • 挖机出租给公司
  • 显示国家税务总局东莞分局打来电话是诈骗还是正规电话
  • smarty怎么用
  • js map()
  • torch.cuda.is_available()
  • thinkphp写api
  • 劳务派遣服务是收派服务吗
  • 应付账款增值税怎么算
  • 金税盘一定要交费吗
  • ubuntu下安装windows
  • 用友删除凭证后为什么还在
  • 吊车租赁有限公司
  • 全资子公司可以转让吗
  • 固定资产如何计提折旧
  • 生产加工企业辅导资料
  • 材料采购合同印花税税率
  • 其他应付款的有
  • 建筑业纳税人简易征收偷逃增值税
  • 研发一个月多少钱
  • 公司账户可以转账到信用卡吗
  • 所得税汇算清缴前取得跨年发票
  • mysql的操作方法
  • 电脑开机出现英文字母开不了机
  • 升级win8.1 64位系统后无法玩剑灵怎么办?win8.1系统无法玩剑灵的解决方法
  • 微软宣布将GPT接入操作系统
  • slmgr.vbs /dli
  • win7系统IE浏览器一点就闪退
  • Win10 Mobile 10572预览版上手体验视频
  • linux 更新系统
  • mac视频预览图不显示
  • 升级win8.1后vpn出现错误720该怎么办?
  • 模拟监控app
  • js计算时间差毫秒
  • python appium 微信
  • 非递归快速排序python
  • linux写时复制
  • void方法设置断言
  • 2015年5-6月关于Android用户隐私保护的3篇顶级论文【2015.5-2015.6】
  • python中的格式化输出用法总结
  • 企业未代扣代缴个税能退税吗
  • 深圳市百旺信投资有限责任公司
  • 如何鼓励互联网企业发展
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设