当前位置: 首页 > news >正文

5G网站建设要多少个四川seo优化

5G网站建设要多少个,四川seo优化,河南省建设厅建筑业信息网,东莞电子商务网站建设重构 在前面几节中,我们已经实现了项目中的几个常见操作:启动服务器、路由中间件、Get 和 Post 形式的请求处理等。现在你已经迈出了走向成功的第一步。 目前,整个示例中所有的代码都写在 app.js 中。然而在业务代码持续增大,场景…

重构

 

在前面几节中,我们已经实现了项目中的几个常见操作:启动服务器、路由中间件、Get 和 Post 形式的请求处理等。现在你已经迈出了走向成功的第一步。

 

目前,整个示例中所有的代码都写在 app.js 中。然而在业务代码持续增大,场景更加复杂的情况下,这种做法无论是对后期维护还是对患有强迫症的同学来说都不是好事。所以我们现在要做的就是:『分梨』。

 

分离 router

 

路由部分的代码可以分离成一个独立的文件,并根据个人喜好放置于项目根目录下,或独立放置于 router 文件夹中。在这里,我们将它命名为 router.js并将之放置于根目录下。

 

修改路由 router.js

  const router = require('koa-router')()module.exports = (app) => {router.get('/', async(ctx, next) => {ctx.response.body = `<h1>index page</h1>`})router.get('/home', async(ctx, next) => {console.log(ctx.request.query)console.log(ctx.request.querystring)ctx.response.body = '<h1>HOME page</h1>'})router.get('/home/:id/:name', async(ctx, next)=>{console.log(ctx.params)ctx.response.body = '<h1>HOME page /:id/:name</h1>'})router.get('/user', async(ctx, next)=>{ctx.response.body = `<form action="/user/register" method="post"><input name="name" type="text" placeholder="请输入用户名:ikcamp"/> <br/><input name="password" type="text" placeholder="请输入密码:123456"/><br/> <button>GoGoGo</button></form>`})// 增加响应表单请求的路由router.post('/user/register',async(ctx, next)=>{let {name, password} = ctx.request.bodyif( name == 'ikcamp' && password == '123456' ){ctx.response.body = `Hello, ${name}!` }else{ctx.response.body = '账号信息错误'}})app.use(router.routes()).use(router.allowedMethods())}

 

修改 app.js

  const Koa = require('koa')const bodyParser = require('koa-bodyparser')const app = new Koa()const router = require('./router')app.use(bodyParser())router(app)app.listen(3000, () => {console.log('server is running at http://localhost:3000')})

代码看起来清爽了很多。

 

然而到了这一步,还是不能够高枕无忧。router 文件独立出来以后,应用的主文件 app.js 虽然暂时看起来比较清爽,但这是在只有一个路由,并且处理函数也非常简单的情况下。如果有多个路由,每个处理函数函数代码量也都繁复可观,这就不是主管们喜闻乐见的事情了。

 

接下来我们对结构进行进一步优化。

 

分离 controller 层

我们把路由对应的业务逻辑也分离出来。

 

新增 controller/home.js

 

新建 controller 文件夹,增加一个 home.js 文件,并从 router.js 中提取出业务逻辑代码。

  module.exports = {index: async(ctx, next) => {ctx.response.body = `<h1>index page</h1>`},home: async(ctx, next) => {console.log(ctx.request.query)console.log(ctx.request.querystring)ctx.response.body = '<h1>HOME page</h1>'},homeParams: async(ctx, next) => {console.log(ctx.params)ctx.response.body = '<h1>HOME page /:id/:name</h1>'},login: async(ctx, next) => {ctx.response.body =`<form action="/user/register" method="post"><input name="name" type="text" placeholder="请输入用户名:ikcamp"/> <br/><input name="password" type="text" placeholder="请输入密码:123456"/><br/> <button>GoGoGo</button></form>`},register: async(ctx, next) => {let {name,password} = ctx.request.bodyif (name == 'ikcamp' && password == '123456') {ctx.response.body = `Hello, ${name}!`} else {ctx.response.body = '账号信息错误'}}}

 

修改路由 router.js

 

修改 router.js 文件,在里面引入 controler/home

  const router = require('koa-router')()const HomeController = require('./controller/home')module.exports = (app) => {router.get( '/', HomeController.index )router.get('/home', HomeController.home)router.get('/home/:id/:name', HomeController.homeParams)router.get('/user', HomeController.login)router.post('/user/register', HomeController.register)app.use(router.routes()).use(router.allowedMethods())}

 

如此,将每个路由的处理逻辑分离到 controller 下的独立文件当中,便于后期维护。

 

目前的代码结构已经比较清晰了,适用于以 node 作为中间层、中转层的项目。如果想要把 node 作为真正的后端去操作数据库等,建议再分出一层 service,用于处理数据层面的交互,比如调用 model 处理数据库,调用第三方接口等,而controller 里面只做一些简单的参数处理。

 

分离 service 层

这一层的分离,非必需,可以根据项目情况适当增加,或者把所有的业务逻辑都放置于 controller 当中。

 

新建 service/home.js

 

新建 service 文件夹,并于该文件夹下新增一个 home.js 文件,用于抽离 controller/home.js 中的部分代码:

  module.exports = {register: async(name, pwd) => {let data if (name == 'ikcamp' && pwd == '123456') {data = `Hello, ${name}!`} else {data = '账号信息错误'}return data}}

 

修改 controller/home.js

// 引入 service 文件
const HomeService = require('../service/home')
module.exports = {// ……省略上面代码// 重写 register 方法 register: async(ctx, next) => {let {name,password} = ctx.request.bodylet data = await HomeService.register(name, password)ctx.response.body = data}
}

 

重构完成

 

下一节我们将引入视图层 views,还会介绍使用第三方中间件来设置静态资源目录等。新增的部分前端资源代码会让我们的用例更加生动,尽情期待吧。

原文https://github.com/ikcamp/koa2-tutorial/tree/4-refactor

http://www.lbrq.cn/news/2394199.html

相关文章:

  • 搭配服装网站源码英雄联盟韩国
  • 武汉地区网站建设seo赚钱培训
  • 什么是微网站企业管理培训课程网课免费
  • 皮具网站建设网络营销策划书封面
  • 珠海专业网站制作公司搜索引擎优化工作
  • 注册科技有限公司经营范围百度seo发帖推广
  • 山东seo广西seo搜索引擎优化
  • 西安知名网站建设公司线上网络平台推广
  • 青岛网站建设 上流刚刚发生了一件大事
  • 青岛私人做网站网上企业推广
  • 保定网站建设优化西安seo霸屏
  • ppt做会动彩字网站手机网站建设案例
  • 网站推广文案怎么写医院网络销售要做什么
  • 有什么做照片书的网站百度seo排名优化软件
  • 西藏自治区住房建设厅网站软件定制
  • 旅游网络推广怎么做seo手机优化软件哪个好用
  • wap网站制作市场营销推广策略
  • 腾虎广州网站建设湖南省人民政府
  • 网站制作维护线下宣传渠道和宣传方式
  • wordpress 分类目录 路径广东网络seo推广公司
  • 太原seo建站微信推广平台收费标准
  • 模板和网站可以分开吗公众号推广
  • 企业网站资料大全企业微信scrm
  • 中国建设局网站招聘计算机培训班培训费用
  • 广州南沙建设和交通局网站网络营销的一般流程
  • 温州网站建站模板个人如何做百度推广
  • 微信电商小程序信息流广告优化师
  • 政府部门网站建设方案seo网络营销技巧
  • 用sql2000做网站泉州关键词优化软件
  • 创建网站怎么赚钱的分销渠道
  • NX二次开发常用函数坐标转化UF_MTX4_csys_to_csys和UF_MTX4_vec3_multipl
  • web.m3u8流媒体视频处理
  • 【Linux】基本指令详解(三) 指令本质、三个查找指令、打包压缩、重要热键、linux体系结构、命令行解释器
  • windows wsl2-06-docker hello world
  • AI(day10)模块化编程概念(模块、包、导入)及常见系统模块总结和第三方模块管理
  • 前端基础——B/S工作原理、服务器与前端三大件