基于 Node.js + Koa 构建完整的 Web API 项目
主题内容:基于 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 框架
- 在项目中安装Koa包,在 VS Code 里打开集成的Terminal命令行终端窗口 快捷键 macOS (⌃ + `) / Windows (Ctrl + `),然后执行下命令安装
npm install koa --save-prod 或者 cnpm install koa --save-prod
- 在“ 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 顺利的启动起来了
我们的项目将会采用“ 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 项目相关推荐
- 基于 Node.js + Koa 构建完整的 Web API (配置 ESLint 和使用 Airbnb 编码规范)
主题内容:基于 Node.js + Koa 构建完整的 Web API (配置 ESLint 和使用 Airbnb 代码规范) 背景描述:上一篇 基于 Node.js + Koa 构建完整的 Web ...
- 《基于Node.js实现简易聊天室系列之项目前期工作》
前期工作主要包括:项目的创建,web服务器的创建和数据库的连接. 项目创建 网上关于Node.js项目的创建的教程有很多,这里不必赘述.Demo所使用的Node.js的框架是express,版本为4. ...
- 基于 Egg.js 框架的 Node.js 服务构建之用户管理设计
转载需经本人同意且标注本文原始地址:https://zhaomenghuan.github.io/blog/nodejs-eggjs-usersytem.html 前言 近来公司需要构建一套 EMM( ...
- 基于 Egg.js 框架的 Node.js 服务构建之用户管理设计 1
前言 近来公司需要构建一套 EMM(Enterprise Mobility Management)的管理平台,就这种面向企业的应用管理本身需要考虑的需求是十分复杂的,技术层面管理端和服务端构建是架构核 ...
- 认识Web前端、Web后端、桌面app和移动app新开发模式 - 基于Node.js环境和VS Code工具...
认识Web.桌面和移动app新开发模式 - 基于Node.js环境和VS Code工具 一.开发环境的搭建(基于win10) 1.安装node.js和npm 到node.js官网下载安装包(包含npm ...
- Day 27: Restify —— 在Node.js中构建正确的REST Web服务
今天决定学一个叫做restify的Node.js模块.restify模块使得在Node.js中写正确的REST API变得容易了很多,而且它还提供了即装即用的支持,如版本控制.错误处理.CORS和内容 ...
- node ajax crud,基于node.js和rethinkdb的CRUD(增删改查)Web服务
基于node.js和rethinkdb的CRUD(增删改查)Web服务 这是一个简单的REST web服务演示案例源码,使用Node.JS和Express 和RethinkDB,后者持久化JSON数据 ...
- Fenix – 基于 Node.js 的桌面静态 Web 服务器
Fenix 是一个提供给开发人员使用的简单的桌面静态 Web 服务器,基于 Node.js 开发.您可以同时在上面运行任意数量的项目,特别适合前端开发人员使用. 您可以通过免费的 Node.js 控制 ...
- 基于Node.js自我展示博客网站-计算机毕设 附源码231547
自我展示博客网站的设计与实现 摘 要 个人博客网站是当今网络的热点,个人博客技术的出现使得每个人可以零成本.零维护地创建自己的网络媒体,Blog站点所形成的网状结构促成了不同于以往社区的Blog文化, ...
- NGINX配置基于Node.js服务的负载均衡服务器
NGINX配置基于Node.js服务的负载均衡服务器 本部署指南说明了如何使用NGINX开源和NGINX Plus在Node.js应用程序服务器池之间平衡HTTP和HTTPS通信.本指南中的详细说明适 ...
最新文章
- 这封以数字构写的蓝图,正在实现笔尖所触即世界
- 窥探try ... catch与__try ... __except的区别
- Android之屏幕旋转之后当前activity被finish了依然被拉起来
- 我是这样理解HTTP和HTTPS区别的
- 【BZOJ2655】calc,dp+拉格朗日插值法
- AI圣经《深度学习》作者斩获2018年图灵奖,100 万奖励!
- Kaggle实战之房价预测
- mysql 存储过程:提供查询语句并返回查询执行影响的行数
- 过水滑环的结构和工作原理
- ipq6010 qsdk spf11.5 64bit编译
- 大数据入门教程系列之Hbase安装(伪分布式)
- 《逻辑:你认为正确,就一定正确吗?》
- 你可以对计算机进行设置 这样用户,win10登陆界面设置 win10登陆界面壁纸
- 学习经历与求职经历分享
- 使用 keepalived 设置虚拟 IP 环境
- 数据结构几个最简单的阐述完整版(带你入门:链表,栈,队列,哈希表,树)通俗易懂简单明了
- STM32F429实现USB通过IAP在线升级
- JAVA学习笔记(6)——接口与多态
- Visual Studio 2017正式版各版本比较:企业版最强大
- 《星际争霸》单位语音中英文完全版