1.搭建服务框架

搭建服务框架

简介

基于Node.js语言,使用Koa2框架。
基础的js语法这里就不做介绍,反正也不难,看一下基础教程就行了,如果有编程基础,直接看代码也可以看懂的。
基础教程点击这里,廖老哥的入门教程还是很适合入门的。
node和npm的安装问题,这里就不特殊说明,自己可以去找找解决方案,推荐使用nvm来安装

关于npm

npm(node package manager),也就是node包管理工具,上面有很多小伙伴开发的开源组件,你可以使用npm来安装、共享、分发代码。链接在这里,我们服务端程序开发使用的开源代码也都是在这里找到的。

配置工程

进入到工程目录后,命令行输入 npm init
后会依次提示输入关于工程的相关信息:
name: (kite_server)        项目名称
version: (1.0.0)           版本号
description:               描述
entry point: (index.js)    程序入口
test command:              测试命令
git repository:            git地址
keywords:                  项目关键词
author:                    作者
license: (ISC)             开源license

都输入完成后会在当前路径生成 package.json 文件,这个文件就是npm包管理的一个配置文件,后续自己做项目的时候可以这样生成,现在可以直接用我生成好的。

{
  "name": "kite_server",
  "version": "1.0.0",
  "description": "个人云相册服务器",
  "main": "index.js",
  "scripts": {
    "start": "node app.js"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/nervending/kite_server.git"
  },
  "dependencies": {
    "koa": "2.7.0"
  },
  "author": "nervending",
  "license": "Apache License 2.0",
  "bugs": {
    "url": "https://github.com/nervending/kite_server/issues"
  },
  "homepage": "https://github.com/nervending/kite_server#readme"
}

这里说明一下对默认生成package.json所做的修改

"scripts": {
    "start": "node app.js"
},

这部分是配置脚本,比如里面的start命令表示,在命令行中 运行 npm run start 会执行 node app.js

"dependencies": {
    "koa": "2.7.0"
},

这个表示当前工程对其他npm包的依赖,这里暂时就是依赖koa(就是我们用的网络框架),对应的版本是2.7.0,后续这里还会不断增加需要的东东。

然后在命令行执行

npm install

这个命令就会按照package.json的配置安装相关依赖,可以看到命令行一顿转圈圈,如果没有出错的话相关的依赖就会被安装到node_modules下。
这里说一下国内因为某些原因可能访问npm会有那么一点点小不顺利,这时候也可以使用cnpm,这个是淘宝做的npm镜像,访问速度快很多,有需要的点击这里,用法差不多。

run起来dongcidaci

还记得package.json里面添加的这一段么?

"scripts": {
    "start": "node app.js"
},

现在就来实现app.js,工程目录下创建文件,输入内容(这就是koa的示例代码,稍后开始自己改)

const Koa = require('koa');
const app = new Koa();

// response
app.use(async (ctx, next) => {
    await next();
    ctx.body = 'Hello World';
});

app.listen(3000);

duang,现在就可以试试运行起来了,在命令行执行

npm start

然后在浏览器中访问 http://localhost:3000/ 就可以看到页面中显示

Hello World

这就是koa版Hello World,就是这么简单,我们的服务跑起来了。

简单说一下 app.use 每一次调用就是插入一个对请求处理的函数,通过调用await next();于是就可以实现逐层依次调用然后再依次返回出来的效果。有点抽象,看一个代码就知道了

const Koa = require('koa');
const app = new Koa();

// response
app.use(async (ctx, next) => {
    console.log('f1 enter')
    await next();
    console.log('f1 out')
    // ctx.body = 'Hello World';
});

app.use(async (ctx, next) => {
    console.log('f2 enter')
    await next();
    console.log('f2 out')
    ctx.body = 'Hello World';
});
app.listen(3000);

如果修改app.js这样的话,然后再访问http://localhost:3000/,你就可以在命令行中看到这样的输出

npm run start

> [email protected] start /Users/virl/wksp/kite/kite_server
> node app.js

f1 enter
f2 enter
f2 out
f1 out

现在这个样子懂了吧。

还需要说明一下,npm中npm start是npm run start的缩写,类似的还有npm test, npm stop等。

工程化的修改

这一次我们增加工程的配置文件,这是工程化开发中必须的一部分,比如开发环境、预发布环境、已经正式环境的不同服务器可能使用的都是不同的配置。这时候就要写不一样的配置文件。
在工程目录下创建configs目录,后续所有的配置文件都写在这个目录下。
在configs目录下创建index.js文件,用来封装对配置文件的读取

let env_name = process.env.NODE_ENV || 'development';
let config = undefined
try {
    config = require(`./${env_name}`);
} catch (error) {
    console.log(`\tFBI WARNING\nconfig file of '${env_name}' not found, exit process`)
    process.exit(-1)
}

config.port = process.env.PORT || config.port   module.exports = config

简单解释一下,process是node的全局变量,通过process.env 可以读取命令行中的参数

let env_name = process.env.NODE_ENV || 'development';

这一样的意思是如果没有配置NODE_ENV,则使用默认值'development'

config = require(`./${env}`);

这个的意思就是引用env_name字符串对应的名字的配置文件

config.port = process.env.PORT || config.port

这一行呢,就是如果在命令行参数指定了PORT字段则优先使用命令行中的,否则使用配置文件中的参数
现在执行 npm start就会报错,错误信息如下

virl@virldeMacBook-Pro-2 ~/w/k/kite_server>npm run start

> [email protected] start /Users/virl/wksp/kite/kite_server
> node app.js

        FBI WARNING
config file of 'development' not found, exit process

这是因为还没有对应的配置文件,在configs目录下创建development.js文件

module.exports = {
    port: 3000
}

然后修改app.js中最后两行

app.listen(Config.port);
console.log(`server start of:${Config.port}`)

在文件头添加对config的引用
const Config = require('./configs')

现在启动

npm run start

> [email protected] start /Users/virl/wksp/kite/kite_server
> node app.js

server start of:3000

可以试着执行这个命令看看输出是什么

env PORT=3301 npm run start

特殊说明

可以引用,不可转载,谢谢

你可能感兴趣的:(1.搭建服务框架)