当前位置:首页 > CN2资讯 > 正文内容

android 静态服务器 koa静态服务器

4天前CN2资讯



1-使用 koa 搭建服务器

var koa=require('koa')   var app=new koa()   app.use(async(ctx)=>{     ctx.body='koa'   })   app.listen(3000,()=>{     console.log('服务器已启动,端口正在监听...')   })

2-如何配置 koa 路由

var koa=require('koa')   var app=new koa()   var Router=require('koa-router')   var router=Router()   router.use('/',(ctx)=>{     ctx.body='koa'   })   app.use(router.routes())   .use(router.allowedMethods())   app.listen(3000,()=>{     console.log('服务器已启动,端口正在监听...')   })

3-静态资源如何获取

var app=new koa()   var Router=require('koa-router')   var router=Router()   var path=require('path')   var static=require('koa-static')   app.use(static(path.join(__dirname,'public')))   router.use('/',(ctx)=>{     ctx.body='koa'   })   app.use(router.routes())   .use(router.allowedMethods())   app.listen(3000,()=>{     console.log('服务器已启动,端口正在监听...')   })

4-koa 如何使用模板引擎

var app=new koa()   var Router=require('koa-router')   var router=Router()   var path=require('path')   var static=require('koa-static')   app.use(static(path.join(__dirname,'public')))   var render=require('koa-art-template')   render('app',{     root:path.join(__dirname,'views'),     extname:'.html',     debug:procress.env.NODE_ENV!=='productions'   })   router.use('/',async(ctx)=>{     await ctx.render('apps',{       name:'张三'     })   })   app.use(router.routes())   .use(router.allowedMethods())   app.listen(3000,()=>{     console.log('服务器已启动,端口正在监听...')   })

5-使用 koa 实现一个用户增删改查的案例

1. app.js

app.js为入口文件,功能是连接数据库,导入文件,引入koa组件,最后启动服务。

'use strict'; const fs = require('fs'); const path = require('path'); const mongoose = require('mongoose'); const db = 'mongodb://localhost/test'; /* 连接数据库 */ mongoose.Promise = require('bluebird'); mongoose.connect(db, {useMongoClient: true}); /** * 获取数据库表对应的js对象所在的路径 * @type {[type]} */ const models_path = path.join(__dirname, '/app/models'); /** * 已递归的形式,读取models文件夹下的js模型文件,并require * @param {[type]} modelPath [description] * @return {[type]} [description] */ let walk = function (modelPath) { fs.readdirSync(modelPath).forEach(function (file) { let filePath = path.join(modelPath, '/' + file) let stat = fs.statSync(filePath) if (stat.isFile()) { if (/(.*)\.(js|coffee)/.test(file)) { require(filePath) } } else if (stat.isDirectory()) { walk(filePath) } }) }; walk(models_path); require('babel-register'); const Koa = require('koa'); const logger = require('koa-logger'); const session = require('koa-session'); const bodyParser = require('koa-bodyparser'); const app = new Koa(); app.use(logger()); app.use(session(app)); app.use(bodyParser()); /** * 使用路由转发请求 * @type {[type]} */ const router = require('./config/router')(); app.use(router.routes()); app.use(router.allowedMethods()); app.listen(3000); console.log('app started at port 3000...');

2. 路由配置

路由配置在config/router.js中进行。

const Router = require('koa-router'); const User = require('../app/controllers/user'); module.exports = function () { let router = new Router({ prefix: '/api' }); router.post('/test/user/users', User.users); router.post('/test/user/user', User.user); router.post('/test/user/add', User.addUser); router.post('/test/user/delete', User.deleteUser); return router };

post方法第一参数为路由地址,第二参数为路由地址对应的方法。 

3. 表结构定义

表结构定义在app/models/user.js中。

let mongoose = require('mongoose'); let Schema = mongoose.Schema; // 定义表结构 let UserSchema = new Schema({ name: { type: String, required: true }, sex: String, area: String, always: Boolean, relationship: Array, mobile: String, phone: String, desc: String, id: String }); // 参数User 数据库中的集合名称, 不存在会创建. let User = mongoose.model('User', UserSchema); module.exports = User;

4. 工具方法

一些增删改查的工具方法放在app/dbhelp/userHelp.js中

'use strict'; let mongoose = require('mongoose'); let User = mongoose.model('User'); /* 查找用户 */ exports.findAllUsers = async () => { let query = User.find(); let res = []; await query.exec(function (err, users) { if (err) { res = []; } else { res = users; } }); return res }; /* 查找特定用户 */ exports.findFilterUsers = async (params) => { let nameReg = new RegExp(params.name, 'i'); let query = User.find({ name: { $regex: nameReg } }); let res = []; await query.exec(function (err, users) { if (err) { res = [] } else { res = users; } }); return res }; /* 查找单个用户 */ exports.findUser = async (params) => { let query = User.find({ id: params.id }); let res = {}; await query.exec(function (err, tUser) { if (err) { res = '没有该用户'; } else { res = tUser[0]; } }); return res }; /* 新增用户 */ exports.addUser = async (user) => { user = await user.save(); return user }; /* 编辑用户 */ exports.updateUser = async (user) => { user = await User.update({id: user.id}, { $set: { name: , sex: user.sex, area: user.area, always: user.always, relationship: user.relationship, phone: user.phone, mobile: user.mobile, desc: user.desc } }); return user }; /* 删除用户 */ exports.deleteUser = async ({id}) => { let flag = false; console.log('flag==========>' + flag); await User.remove({id}, function (err) { if (err) { flag = false } else { flag = true } }); console.log('flag=====await=====>' + flag); return flag };

 

5. 路由配置中对应的方法

路由配置中对应的方法在app/controller/user.js中。

'use strict'; let xss = require('xss'); let mongoose = require('mongoose'); let User = mongoose.model('User'); let uuid = require('uuid'); import userHelper from '../dbhelper/userHelper.js' /* 多用户 */ exports.users = async (ctx, next) => { let data; if (ctx.request.body) { data = await userHelper.findFilterUsers(ctx.request.body) } else { data = await userHelper.findAllUsers() } ctx.body = { success: true, data } }; /* 单用户 */ exports.user = async (ctx, next) => { let data = await userHelper.findUser(ctx.request.body) ctx.body = { success: true, data } }; /* 添加(更新)用户 */ exports.addUser = async (ctx, next) => { let newObj = ctx.request.body, user2; let id = || uuid.v4(); let user = new User({ name: , sex: newObj.sex, area: newObj.area, always: newObj.always, relationship: newObj.relationship, phone: newObj.phone, mobile: newObj.mobile, desc: newObj.desc, id: id }); if () { user2 = await userHelper.updateUser(user); } else { user2 = await userHelper.addUser(user); } if (user2) { ctx.body = { success: true, data: user2 } } }; /* 删除用户 */ exports.deleteUser = async (ctx, next) => { let id = xss(); let data = await userHelper.deleteUser({id}); ctx.body = { success: true, data } };
    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/20660.html

    分享给朋友:

    “android 静态服务器 koa静态服务器” 的相关文章

    RackNerd数据中心服务全面解析:选择适合您的VPS解决方案

    大家好,今天我们来聊聊RackNerd,这是一家非常有趣的数据中心服务公司。作为一个提供数据中心解决方案的企业,RackNerd在全球范围内拥有20个数据中心,主要分布在美国、加拿大、英国、荷兰、法国、德国、新加坡和爱尔兰等国。特别的是,RackNerd在美国的布局最为广泛,共有14个数据中心,这不...

    VPS商家全攻略:选择适合你的虚拟专用服务器

    VPS商家概述 在数字化时代,VPS(虚拟专用服务器)服务逐渐成为企业和个人用户的重要选择。VPS不仅为用户提供了灵活性,而且在性能、控制权和安全性上都优于传统的共享主机。这使它成为许多需要独立环境来运行网站或应用程序的用户的理想解决方案。 选择VPS的用户通常追求更高的稳定性和可靠性。相比于共享主...

    恒创科技:引领数据中心与网络安全解决方案的先锋

    恒创科技这个名字,对于熟悉科技行业的人来说,或许并不陌生。它是一个多元化的品牌,涉及数据中心、网络安全、软件开发和智慧城市解决方案等多个领域。我对这家公司一直抱有浓厚的兴趣,因为它所提供的服务非常全面,能够满足不同行业的需求。 在我看来,恒创科技一直努力将最先进的技术应用于实际场景中,尤其是在互联网...

    选择野草云主机服务,享受高性价比与优质体验

    野草云是一家在2016年成立的主机服务提供商,由国人运营,专注于为中国大陆地区的用户提供优质的服务和产品。作为一家相对年轻的主机商,野草云力求用更贴近用户的方式来满足客户需求,特别是在国内市场需求快速增长的背景下,它的出现让很多用户找到了合适的主机选择。 说到野草云的历史背景,首先让我想起它在竞争激...

    优化RackNerd DC2机房 IP使用体验与性能评测

    我最近对RackNerd的DC2机房产生了越来越多的兴趣,特别是位于美国洛杉矶的这座机房。它被誉为RackNerd中中国国内访问速度较快的机房之一,吸引了很多需求高效网络连接的用户。这座机房的地理位置确实蛮不错,靠近美西主干线,对于需要与国内建立连接的网站和应用来说,能带来相对更快的访问速度。 对于...

    搬瓦工机场优惠:享受稳定快速网络服务的最佳选择

    在了解搬瓦工机场之前,我认为确实有必要先对这个服务进行全面的认识。搬瓦工机场(Just My Socks)是由加拿大著名VPS服务提供商搬瓦工(BandwagonHost)于2018年推出的一项机场服务。这个项目的目标是为用户提供更为便捷、快速的网络连接方式,尤其是在某些地区的网络受限时显得尤为重要...