《一个最简单的 express 应用》
访问 http://localhost:3000/
时,输出 你好,世界
。
- 包管理器 npm 。使用 npm 安装包,并自动安装所需依赖。
- 框架 express 。学习新建 express 实例,并定义 routes ,产生输出。
按照惯例,我们来个 helloworld 入门。
npm 可以自动管理包的依赖. 只需要安装你想要的包, 不必考虑这个包的依赖包.
在 PHP 中, 包管理使用的 Composer
, python 中,包管理使用 easy_install
或者 pip
,ruby 中我们使用 gem
。而在 Node.js 中,对应就是 npm
,npm 是 Node.js Package Manager
的意思。
express 是 Node.js 应用最广泛的 web 框架,现在是 4.x 版本,它非常薄。跟 Rails 比起来,完全两个极端。
express 的官网是 http://expressjs.com/ ,我常常上去看它的 API。
首先我们需要得到一个 express。
不同于 ruby 的 gem 装在全局,Node.js 的依赖是以项目为单位管理的,直接就安装在项目的 node_modules
目录下,而且每个依赖都可以有指定版本的其他依赖,这些依赖像一棵树一样。根据我自己的使用经验来说,npm 的体验在 pip 和 gem 之上。
安装完成后,我们的 lesson1 目录下应该会出现一个 文件夹,ls
看看
$ ls node_modules
里面如果出现 express 文件夹则说明安装成功。
或者 npm命令提供更清晰直观的显示:
我们继续应用程序的编写。
新建一个 app.js 文件
$ touch app.js
copy 进去这些代码
执行
$ node app.js
在这个例子中,node代码监听了3000端口,用户通过访问http://localhost:3000/
得到了内容,为什么呢?
端口的作用:通过端口来区分出同一电脑内不同应用或者进程,从而实现一条物理网线(通过分组交换技术-比如internet)同时链接多个程序
)
端口号是一个 16位的 uint, 所以其范围为 1 to 65535 (对TCP来说, port 0 被保留,不能被使用. 对于UDP来说, source端的端口号是可选的, 为0时表示无端口).
app.listen(3000)
,进程就被打标,电脑接收到的3000端口的网络消息就会被发送给我们启动的这个进程
RFC1738 定义的url格式笼统版本,
scheme有我们很熟悉的http
、https
、ftp
,以及著名的ed2k
,thunder
。
通常我们熟悉的url定义成这个样子
用过ftp的估计能体会这么长的,网页上很少带auth信息,所以就精简成这样:
在上面的例子中, scheme=http, host=localhost, port=3000, url-path=/, 再联想对照一下浏览器端window.location
对象。
著名的localhost
,你可以在电脑的hosts文件上找到
在了解完端口和url之后,再去看例子代码,相信应该好理解很多。
有必要的话,还可以在解刨一下express的use逻辑,对峙http.createServer
,相信还有火花,:)