monitors
音乐以及黑魔法

尝试一发Node.js

violet posted @ Apr 28, 2014 10:02:13 AM in 胡扯 with tags nodejs express , 7203 阅读

不论说啥,反正就是没工作_(:3 JZ)_

来来来,不如折腾点项目玩耍。

久闻Node.js大名,然后各种事件驱动的黑魔法,于是来玩耍一发。

 

环境准备

吾用Mint15,源内有Node.js的包,但是安装之后各种不科学不魔法的事情出现,把node的路径加到$PATH,更改alias,啥啥……不干了!直接去编译了一发,让CPU飞了一小会,done!

$ node -v
v0.10.26
$ npm -v
1.4.3

看了BYVoid的《Node.js开发指南》,对Node.js有了个大概的了解,各种callback以前也接触过,于是可以试一试的说~

然后express创建个应用

$ express -e myapp3

   create : myapp3
   create : myapp3/package.json
   create : myapp3/app.js
   create : myapp3/public
   create : myapp3/public/javascripts
   create : myapp3/public/stylesheets
   create : myapp3/public/stylesheets/style.css
   create : myapp3/routes
   create : myapp3/routes/index.js
   create : myapp3/routes/users.js
   create : myapp3/views
   create : myapp3/views/index.ejs
   create : myapp3/views/error.ejs
   create : myapp3/bin
   create : myapp3/bin/www
   create : myapp3/public/images

   install dependencies:
     $ cd myapp3 && npm install

   run the app:
     $ DEBUG=my-application ./bin/www

好啦就创建完成了,npm install解决掉依赖包的问题。

用npm start让它们跑起来(看过的资料和书中都写的是node app.js让它们跑起来,express的guide写npm start,这俩的区别在于npm start会先扫描一遍package.json,在满足依赖的前提下跑,node app.js只是读取app.js内的东西,让其跑起来)

$ curl localhost:3000
<!DOCTYPE html><html><head><title>Express</title><link rel="stylesheet" href="/stylesheets/style.css"></head><body><h1>Express</h1><p>Welcome to Express</p></body></html>

成功!

$ ls                 
app.js  bin  node_modules  package.json  public  routes  views

app.js是project的入口

blahblah(routes下的转发,public下的静态文件,views下的显示页面,node_modules下的依赖包)

添加一个页面

这货是MVC模式,添加一个页面也就相当于添加转发规则,添加一个页面

在app.js里添加

app.get('/login', routes.login);

在routes下添加转发规则

var express = require('express');
var router = express.Router();

router.get('/hello', function(req, res) {
    res.render('hello', { title: 'hello' });
});

module.exports = router;

修改app.js里使用view engine的类型

app.engine('.html', ejs.__express);
app.set('view engine', 'html');

添加hello.html页面

<% include header.html %>
<h1> Welcome ! </h1>
<% include footer.html %>

header.html和footer.html分别写了

<!DOCTYPE html>
<html lang="en">
    <head>
	<meta charset="utf-8">
	<title><%=: title %></title>
	<!-- Bootstrap -->
	<link href="/stylesheets/bootstrap.min.css" rel="stylesheet" media="screen">
    </head>
<body screen_capture_injected="true">
<script src="/javascripts/bootstrap.min.js"></script>
</body>
</html>

重启

然后就可以啦

总结

学习node+express重新复习MVC这种framework,各种callback横行,各种错误还不好调= =。。。总之让它跑起来容易,让它按照我的旨意跑起来就_(:3 JZ)_

还有就是加转发规则的时候遇到的

这个是正确的:router.get('/', function(){}); module.exports = router; 

但是这个就是错误的:exports.router = function(){};

虽然我经常看没有文档的东西(好了我不吐槽上个东家了),但是这个文档实在是让初学者很摸不到头脑的说,目前查到的书和资料,手动试的时候发现是不可以用的,而且。。。也没过时很久的说。。。好了,我还是不吐槽了,接着看代码去blahblah

  • 无匹配

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter