主题内容:基于 Node.js + Koa 构建完整的 Web API 项目
目标框架:Node.js v14.15.4 (包含 npm 6.14.10)
开发工具:Visual Studio Code (VS Code)
开发平台:macOS Big Sur 11.1  /  Windows 10
开发人员:成长的小猪 Jason Song
背景描述:上一篇 基于Node.js构建完整服务端应用(创建 Node.js Web API 项目篇)  我们分别介绍了在 macOS Big Sur /  Windows 10 上创建 Node.js Web API 项目 和 创建项目目录结构(项目骨架),这一篇我们将介绍使用 Koa 框架

  1. 在项目中安装Koa包,在 VS Code 里打开集成的Terminal命令行终端窗口 快捷键 macOS (⌃ + `) / Windows (Ctrl + `),然后执行下命令安装

    npm install koa --save-prod   或者  cnpm install koa --save-prod

  2. 在“ jasonsoft-koa-server”项目根目录创建一个名为 app.js 的文件(初始化相关服务和注入相关中间件),然后我们导入 Koa 框架,下面是官方示例,采用的是“ CommonJS ”规范,使用如下
    const Koa = require('koa');
    const app = new Koa();app.use(async ctx => {ctx.body = 'Hello World';
    });app.listen(3000, ()=> {console.log(`[\x1B[36mRunning\x1B[0m] 服务已启动:http://localhost:3000`);
    });

    在 terminal 里执行 “ node app.js ”, Koa 顺利的启动起来了

  3. 我们的项目将会采用“ ES ”规范,让我们的项目支持 ES6/7/8/9 及更高版本的新特性和语法的支持,我们先将代码改成以下的样子

    /*** 初始化相关服务和注入相关中间件* * Added by Jason.Song (成长的小猪) on 2021/01/31* CSDN: https://blog.csdn.net/jasonsong2008* GitHub: https://github.com/JasonSoft-Net*/import Koa from 'koa';/** 初始化Koa */
    const app = new Koa();app.use(async ctx => {ctx.body = 'Hello World';
    });/** 监听指定端口,启动服务 */
    app.listen(3000, ()=> {console.log(`[\x1B[36mRunning\x1B[0m] 服务已启动:http://localhost:3000`);
    });

    然后在 terminal 里执行 “ node app.js ”,你会发现报错了,如下

    ➜  jasonsoft-koa-server git:(main) ✗ node app.js
    (node:33323) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
    (Use `node --trace-warnings ...` to show where the warning was created)
    /Users/jason/Projects/Node/jasonsoft-koa-server/app.js:9
    import Koa from 'koa';
    ^^^^^^SyntaxError: Cannot use import statement outside a moduleat wrapSafe (internal/modules/cjs/loader.js:979:16)at Module._compile (internal/modules/cjs/loader.js:1027:27)at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)at Module.load (internal/modules/cjs/loader.js:928:32)at Function.Module._load (internal/modules/cjs/loader.js:769:14)at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)at internal/main/run_main_module.js:17:47

    我们发现从上面的执行结果看,Node.js 当前的版本虽然是支持ES语法和特性, 需要我们在node package.json 配置"type": "module",配置了这个属性虽可以解决当前的问题,但上这个配置会影响没有按“ ES module ” 规范编写的包,当我们引用了 “ CommonJS ” 规范编写的包,也会报错误,可能会报如下的错误

    /Users/jason/Projects/Node/jasonsoft-koa-controller/example/app.js:18var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(ctx, next) {^ReferenceError: regeneratorRuntime is not definedat /Users/jason/Projects/Node/jasonsoft-koa-controller/example/app.js:7:1

    我将在下一篇介绍如何让我们的项目支持 ES6/7/8/9 及更高版本的新特性和语法,且向前兼容的处理方法

项目源码地址:https://github.com/JasonSoft-Net/jasonsoft-koa-server

上一篇 基于Node.js构建完整服务端应用(创建 Node.js Web API 项目篇)

下一篇 基于 Node.js + Koa 构建完整的 Web API (让项目支持 ES6/ES2015 及更高版本的新特性)

如果此文对你有一点点帮助,请给一个赞哦;如果你对此文感兴趣,请关注我,后面将继续更新相关内容,查看我本人更多原创文章,请点击这里=>。

基于 Node.js + Koa 构建完整的 Web API 项目相关推荐

  1. 基于 Node.js + Koa 构建完整的 Web API (配置 ESLint 和使用 Airbnb 编码规范)

    主题内容:基于 Node.js + Koa 构建完整的 Web API (配置 ESLint 和使用 Airbnb 代码规范) 背景描述:上一篇 基于 Node.js + Koa 构建完整的 Web ...

  2. 《基于Node.js实现简易聊天室系列之项目前期工作》

    前期工作主要包括:项目的创建,web服务器的创建和数据库的连接. 项目创建 网上关于Node.js项目的创建的教程有很多,这里不必赘述.Demo所使用的Node.js的框架是express,版本为4. ...

  3. 基于 Egg.js 框架的 Node.js 服务构建之用户管理设计

    转载需经本人同意且标注本文原始地址:https://zhaomenghuan.github.io/blog/nodejs-eggjs-usersytem.html 前言 近来公司需要构建一套 EMM( ...

  4. 基于 Egg.js 框架的 Node.js 服务构建之用户管理设计 1

    前言 近来公司需要构建一套 EMM(Enterprise Mobility Management)的管理平台,就这种面向企业的应用管理本身需要考虑的需求是十分复杂的,技术层面管理端和服务端构建是架构核 ...

  5. 认识Web前端、Web后端、桌面app和移动app新开发模式 - 基于Node.js环境和VS Code工具...

    认识Web.桌面和移动app新开发模式 - 基于Node.js环境和VS Code工具 一.开发环境的搭建(基于win10) 1.安装node.js和npm 到node.js官网下载安装包(包含npm ...

  6. Day 27: Restify —— 在Node.js中构建正确的REST Web服务

    今天决定学一个叫做restify的Node.js模块.restify模块使得在Node.js中写正确的REST API变得容易了很多,而且它还提供了即装即用的支持,如版本控制.错误处理.CORS和内容 ...

  7. node ajax crud,基于node.js和rethinkdb的CRUD(增删改查)Web服务

    基于node.js和rethinkdb的CRUD(增删改查)Web服务 这是一个简单的REST web服务演示案例源码,使用Node.JS和Express 和RethinkDB,后者持久化JSON数据 ...

  8. Fenix – 基于 Node.js 的桌面静态 Web 服务器

    Fenix 是一个提供给开发人员使用的简单的桌面静态 Web 服务器,基于 Node.js 开发.您可以同时在上面运行任意数量的项目,特别适合前端开发人员使用. 您可以通过免费的 Node.js 控制 ...

  9. 基于Node.js自我展示博客网站-计算机毕设 附源码231547

    自我展示博客网站的设计与实现 摘 要 个人博客网站是当今网络的热点,个人博客技术的出现使得每个人可以零成本.零维护地创建自己的网络媒体,Blog站点所形成的网状结构促成了不同于以往社区的Blog文化, ...

  10. NGINX配置基于Node.js服务的负载均衡服务器

    NGINX配置基于Node.js服务的负载均衡服务器 本部署指南说明了如何使用NGINX开源和NGINX Plus在Node.js应用程序服务器池之间平衡HTTP和HTTPS通信.本指南中的详细说明适 ...

最新文章

  1. 这封以数字构写的蓝图,正在实现笔尖所触即世界
  2. 窥探try ... catch与__try ... __except的区别
  3. Android之屏幕旋转之后当前activity被finish了依然被拉起来
  4. 我是这样理解HTTP和HTTPS区别的
  5. 【BZOJ2655】calc,dp+拉格朗日插值法
  6. AI圣经《深度学习》作者斩获2018年图灵奖,100 万奖励!
  7. Kaggle实战之房价预测
  8. mysql 存储过程:提供查询语句并返回查询执行影响的行数
  9. 过水滑环的结构和工作原理
  10. ipq6010 qsdk spf11.5 64bit编译
  11. 大数据入门教程系列之Hbase安装(伪分布式)
  12. 《逻辑:你认为正确,就一定正确吗?》
  13. 你可以对计算机进行设置 这样用户,win10登陆界面设置 win10登陆界面壁纸
  14. 学习经历与求职经历分享
  15. 使用 keepalived 设置虚拟 IP 环境
  16. 数据结构几个最简单的阐述完整版(带你入门:链表,栈,队列,哈希表,树)通俗易懂简单明了
  17. STM32F429实现USB通过IAP在线升级
  18. JAVA学习笔记(6)——接口与多态
  19. Visual Studio 2017正式版各版本比较:企业版最强大
  20. 《星际争霸》单位语音中英文完全版

热门文章

  1. 尺寸链计算-尺寸公差分析-的国产化之路
  2. jQuery EasyUI教程
  3. PHP数字球,球体的计算
  4. 这样处理,Java中的注释代码也会执行
  5. requirement生成和使用
  6. 确定部分分式中待定系数的留数方法
  7. springMvc中的校验框架@valid和@validated
  8. 比赛推送:ML/NLP/推荐/CV,一大波比赛来袭!
  9. Power Pivot数据建模与数据汇总分析
  10. 把信送给加西亚读后感