nodejs框架express4.2 簡單入門
Perface
今天看了一些nodejs,《nodejs開發指南》。看到了expres的時候,由於那本書用的express版本號跟我的不一樣。導致非常多功能不能實現。所以就各種google,如今就把這個流程記錄下來。遇見的bug和一些原理。
要玩express就要裝nodejs,假設你的操作系統是centos6.5能夠參考我之前寫的博客centos6.5安裝nodejs。其它操作系統也大同小異。能夠看Node Installation
Bug
- 1
Express Command not found
- 最初操作:跟著《nodejs開發指南》敲
npm install -g express
,安裝好了。就在linux命令行敲express --help
就出現上面的原因了。 - 解決方法:在安裝一個包
npm install -g express-generator
- 原因:express3+已經把創建一個APP的功能分離出來為express-generator,沒它你創建不了應用程序
- 2 express -t ejs microblog創建的不是ejs模板引擎而是jade模板引擎
- 最初操作:跟著《nodejs開發指南》在命令行敲
express -t ejs microblog
是用來創建應用程序的,應用程序的名字叫microblog、模板引擎是ejs - 出現情況:可是通過查看microblog文件夾中的package.json中知道創建出來的不是ejs模板而是jade模板引擎
- 解決方法:版本號不一樣,用錯命令了,應該是
express -e microblog
(-e就是ejs模板)
- 3 node app.js沒效果
- 最初操作:跟著《nodejs開發指南》在命令行敲node app.js,然後就用瀏覽器訪問監聽的3000port
- 出現情況:訪問不到頁面
- 解決方法:版本號不一樣。用錯命令了。應該是
npm start
Summary
事實上簡單入門式用express ejs模板過程例如以下
- npm install -g express && npm install -g express-generator
- express -e microblog
- cd microblog & make install
- npm start
- 瀏覽器訪問localhost:3000
想要更加詳細了解,能夠查看express幫助文檔 Express Guide
Theory
事實上在之後我還遇見一個bug,這個不是版本號的問題,就是我在linux又一次開一個終端來輸入命令的時候,當前文件夾是/home/monkindey/Desktop事實上就是在桌面,當我輸入npm
start
時候就報錯了“Error:ENOENT,open‘/home/monkindey/Desktop/package.json‘”,當時我就認為是不是要切換到express應用程序的文件夾去,果然,當切換到應用程序的文件夾中,再運行命令npm start就成功了。然後我就有了困惑了。
- 第一、為什麽我npm start要切換到應用程序的文件夾裏才幹運行
- 第二、為什麽我npm start的時候到底是跑應用程序哪個文件?
以下讓我來簡單說一下
- npm 是nodejs的包管理工具,能夠使用它來下載包、查看文件等功能
- 用express創建的應用程序是一個符合CommonJS規範的一個nodejs包
- npm運行的時候會讀取當前文件夾的package.json文件。這個也就是我上面那個bug出現的原因
- 運行npm start事實上是運行package.json中的script相應的對象中的start屬性所相應的命令行,以下是我應用程序的package.json:
所以事實上假設吧package.json中的start改成monkindey或者其它字符串,然後你在linux命令行敲上npm monkindey/或者其它。程序照樣會運行
事實上package.json就是一個配置文件。僅僅是我們之前用的xml格式,可是在nodejs用的是json能夠,簡單easy理解。
從package.json我們能夠看出來npm start事實上運行的是./bin/www裏面是創建一個server然後監聽3000port,所以我們能夠在瀏覽器中通過輸入"localhost:3000"來訪問應用程序
Reference
Express command not foundnode.js express npm start
Express Getting started
《nodejs開發指南》
nodejs框架express4.2 簡單入門