极简Node教程-七天从小白变大神(一:你需要Express)
如果说用一句话来概括Node那就是:它开启了JavaScript服务器端语言。
Node系列的文章并不会从一开始长篇概论的讲Node的历史,安装,以及其他很琐碎的事情。只会专门介绍关于Node或者准确来讲是关于Node的敏捷开发。
首先我们需要一个脚手架
快速了解Express
1.Express 是一个基于 Node.js 平台的极简、灵活的 web 应用开发框架,它提供一系列强大的特性,帮助你创建各种 Web 和移动设备应用。
2.API
丰富的 HTTP 快捷方法和任意排列组合的 Connect 中间件,让你创建健壮、友好的 API 变得既快速又简单。
3.性能
Express 不对 Node.js 已有的特性进行二次抽象,我们只是在它之上扩展了 Web 应用所需的基本功能。
如果说你对以上还是云里雾里的话,我们接下来马上利用Express开发一个网站
Express五分钟开发一个网站
首先确保你已经安装好Node.exe 及其附带的npm , 这是我们开发的关键,然后打开任意的命令行不管是系统自带的命令行或者node附带的亦或是Git cmd.
键入:
$ npm install express-generator -g // npm install 是安装任何第三方包的命令, express-generator -g 指在全局范围下安装名为 express-generator 的第三方包。
等待系统联网安装express,下载完成后,可以选择你喜欢的名字作为应用目录:
express myapp //指在当前命令行目录下创建一个名为myapp的文件夹用来做应用目录
等待系统生成应用骨架,然后进入myapp目录下:
cd myapp //到达我们的工作目录
然后 下载所有express这个应用所需的所有依赖项 (可以理解为前端项目自动下载jquery,bootstrap 之类的第三方库或者框架,当然事实上并不是这个意思):
npm install
下载完毕后,就可以启动我们的express应用了,运行:
npm start // 或者 node app.js 或者其实还有很多的奇淫巧计
现在打开你喜欢的Chrome浏览器或者Edge 浏览器 网址输入奇怪的 域名:
http://localhost:3000/
等待片刻,标志性的Express 就出来了,现在不管你的心情是欣喜或者郁闷抑或习以为常,这本质上就是一个网站了,为防你不信,还可以输入另一个奇怪的域名:
http://localhost:3000/users //
我们刚才仅仅只是简单的启动了express罢了,现在开始真正的开发了。
在目录下新建一个名为server.js 的文件,作为项目的入口文件:
/* 以下代码等下会有详细的解释 */
var express = require('express'); // 用来引入express模块
var app = express(); // express 实例对象
app.set('port',process.env.PORT || 3000);
// 设置端口为3000
app.get('/',function (req,res) { // 设置首页的路由 用 '/' 表示
res.send('Ritsu Yan ')
})
app.get('/about',function (req,res) { //设置about页面的路由 用 '/about' 表示
res.send('the node course')
})
app.use(function (req,res,next) { // 设置404页面
res.status(404);
res.send('404 - Not Found')
})
app.listen(app.get('port'),function () { // 监听端口如果有用户进入页面发送请求我们输出以下语句
console.log('express started on port 3000')
})
现在 关闭当前命令行新建一个 命令行然后重新输入
node server.js
然后浏览器重载首页即
http://localhost:3000/
或者
http://localhost:3000/about
都能得到满意的回应
现在我们看看server.js 做了什么
使用require('xxx') 引入了express 模块, 这种方式是 Node 中少数同步的操作,它一开始会去Node 的原始 node_modules 目录下寻找express 模块 然后引入,把值赋给express,然后实例化为app.
app.set('port',xxx) 能够设置我们的域名端口,这里process.env.PORT是指
环境变量要是设置了PORT,那么就用环境变量的PORT,环境变量没有我们就用3000.
其他路由信息可以自行百度或者暂时只需要了解 app.get是 用来处理路由请求的.
详见
小结
本篇只是简单的介绍了express的简单开发,由于篇幅欲求极简,其他讯息烦请自行了解。
作者:颜卿今天Coding了吗
链接:https://www.jianshu.com/p/b4701a6efc50
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
极简Node教程-七天从小白变大神(一:你需要Express)的更多相关文章
- 极简Node教程-七天从小白变大神(二:中间件是核心)
当我们只引入express时,前述的那些功能都是没有启用的.那么,如何将这些功能添加进来呢?express通过其中间件机制实现了这些功能的管理.每一个中间件对应一个功能,而中间件可以是第三方库,也可以 ...
- mui初级入门教程(四)— 再谈webview,从小白变“大神”!
文章来源:小青年原创发布时间:2016-06-05关键词:mui,html5+,webview转载需标注本文原始地址: http://zhaomenghuan.github.io/#!/blog/20 ...
- 【同行说技术】Python程序员小白变大神必读资料汇总( 三)
在文章<Python开发.调试.爬虫类工具大全>里面向大家总结了各种实用工具和爬虫技术,今天小编收集了5篇带有实例干货的资料,赶紧来看看吧!另外,喜欢写博客的博主可以申请加工程师博主交流群 ...
- 极简 Node.js 入门 - Node.js 是什么、性能有优势?
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
- 极简 Node.js 入门 - 1.2 模块系统
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
- 极简 Node.js 入门 - 1.3 调试
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
- 极简 Node.js 入门 - 1.4 NPM & package.json
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
- 极简 Node.js 入门 - 2.1 Path
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
- 极简 Node.js 入门 - 2.2 事件
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
随机推荐
- ABAP WRITE
1.空行 WRITE /. 2.AS CHECKBOX VALUE 'X', check2 VALUE ' '. START-OF-SELECTION. WRITE: / check1 AS CHEC ...
- php编码转换相关
iconv (PHP 4 >= 4.0.5, PHP 5, PHP 7) iconv — 字符串按要求的字符编码来转换 string iconv ( string $in_charset , s ...
- Masonry 等间隔或等宽高排列多个控件
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typica ...
- 不该被忽视的CoreJava细节(三)
一.不该被遗忘的移位位运算 本文主要介绍移位运算(Shift Operation), 适当介绍一下其它相关的位运算. 甭说计算机刚发明那会,就连21世纪初那段日子,计算机内存都是KB/MB计算的.编写 ...
- GBase数据库存储过程——批量查询多个数据表的磁盘占用情况
--清理历史表,可选 DROP TABLE IF EXISTS `dap_model`.`data_statics`; CREATE TABLE `dba`.`data_statics` ( `TAB ...
- HDU 1305 Immediate Decodability 可直接解码吗?
题意:一个码如果是另一个码的前缀,则 is not immediately decodable,不可直接解码,也就是给一串二进制数字给你,你不能对其解码,因解码出来可能有多种情况. 思路:将每个码按长 ...
- HDU1195 双向BFS(或BFS)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1195 , 双向BFS或者直接BFS也可以过. 其实这道题只是单向BFS就可以过的,但是为了练算法,所以 ...
- IOS 获取手机的屏幕宽度
//屏幕的宽度 CGFloat screenW=[UIScreen mainScreen].bounds.size.width;
- UVA 10375 Choose and divide(大数的表示)
紫上给得比较奇怪,其实没有必要用唯一分解定理.我觉得这道题用唯一分解只是为了表示大数. 但是分解得到的幂,累乘的时候如果顺序很奇怪也可能溢出.其实直接边乘边除就好了.因为答案保证不会溢出, 设定一个精 ...
- 国产中标麒麟Linux部署dotnet core 环境并运行项目 (一) 安装dotnet core
背景 根据我之前写的文章 将 Net 项目升级 Core项目经验:(一)迁移Net项目为Net Core\Standard项目,我们将公司内部最核心的ORM框架迁移到net core 上面,并在win ...