小白学习node.js的心得

2012年2月6日

学习Node.js的目的,主要是为了了解Web技术,以便顺应近些年以及未来可能持续几十年的互联网热潮,以备不时之需。说来惭愧,已经成了CS Master了,对于Web开发还是小白的水准。

很久以前(我不知道具体时间,姑且就这么说吧),网页都是静态的。用户通过浏览器请求指定的页面(通过输入网址或者点击已有的页面上的超链接)来获得静态的页面。静态,不仅是说没有可以满页乱动的图片,发光的文字等等,更重要的意思是说网页的内容是固定的,保存在服务器上的,不可定制(例如,不可能将每一个访问者的姓名显示在访问者请求的页面上)。后来有了动态网页,图片可以动了,文字可以闪光了,网页内容变得可定制了,程序可以在浏览器后面跑了,例如最简单的例子,浏览器后台的程序可以动态地检查你在注册某一个账户时候输入的两个密码是否一致。

这是怎么做到的呢?一方面,对于网页的生成,本质上就是生成html文本。那么显而易见,一定要有一个程序,接受相应的参数,来生成这样的文本。这样的程序过去用perl和CGI搭配着写,现在呢,可以用PHP,JSP,ASP,等等等,以及Node.js这样的脚本语言去写。当然这些语言的功能绝不仅仅是生成html文本,还包括对数据库的访问,对文件的读写,甚至他们本身就可以构建一个HTTP服务器,像Node.js。

要构建一个网站,需要开发许多页面。在MVC架构下,通常是开发页面模板,然后再利用模板引擎,结合相关的页面数据,生成最终的html页面。用户对页面的请求封装在由浏览器发送至服务器的http数据包里,请求的方法有GET,POST,DELETE等。我们开发的服务器程序,必须根据请求中所包含的资源生成(或直接提取现有)的html页面返回给客户端,这一过程叫做路由控制。一个浏览器发送的请求的例子是:http://www.renren.com/login。那么服务器程序中就必须对'/login'这一访问请求进行处理,例如添加处理函数等。

今天遇到的问题是:在调用req.flash()方法试图在网页上显示消息时,有异常抛出'req.flash() requires sessions'。

2014年2月9日
坑啊,上一篇提到的'req.flash() requires sessions'问题,上网查了下资料,居然说“ 把app.use(app.router);放到session之前就会undefined,之后就好了”,我一试,还真是的! 原文链接
另外那天遇到的,ejs不能使用layout.ejs的问题,解决方法是:要在工程目录下的package.json文件中添加"express-partials": "*";
也就是说要安装express-partials这个依赖项。当然,也许以后的ejs版本就不需要这样,或者又有了新的方法,但是我现在不care了。PS:目前我用的ejs的版本是2.5.8。
2014年2月11日
至此,完成了利用node.js对一个极其简单的微博系统的“开发”(- -! 几乎是照着书上的代码复制的)。然而起到的作用是符合预期的:对网站的构建有了系统化,全局地认识。更加理解了“前端”与“后端”的概念,区别,联系。理解了服务器和浏览器如何交互地工作,共同为用户服务。
所谓前端,就是直接与用户打交道的网页和其上的所有元素,例如,表单,动画,数据,等等。决定在一张网页上显示什么,怎么显示,要不要动画,设计动画,是前端工程师的事;服务器接收到客户端发来的请求,是否要与数据库交互,怎么交互,存还是取,有没有数据需要运算的,怎么运算,要不要与其他的网络终端通信,以及最终返回给用户什么样的信息,什么样的页面,等等一系列网页“之后”的动作,都是后端工程师的问题。两者的区别和功能划分是大体明确的,但又互相耦合。后端工程师不可能完全不懂前端,否则例如简单的用户注册的事情都处理不了的(这件事需要用到前端提供的一个表单,后端必须处理这个表单)。当然这样的联系仅仅是要求后端或者前端工程师,稍微了解彼此,以至于能够在设计后端程序或者前端页面时能面向统一的目标,可行的解决方案,最终构建成功的网站。

总的来说,构建一个网站是容易的:首先,明确并且精确地描述需求(相当相当重要);然后,根据需求设计网站地图,即有哪些页面,页面之间的路由关系;再然后,编写后台程序;最后是测试和发布。
但构建一个可靠的网站是极其困难的。什么是可靠的网站?即,面临极大的流量不会故障或故障率很低或能够自我修复从而不至于服务终止,响应时间快,服务器消耗低。上述都是从后台的角度考虑,从前台的话,无非就是,好看,操作简便,结构清晰,等等。以上这些,才真正是无数Web开发者为之日夜操劳的问题。解决这些问题,归根结底还是解决算法和数据结构的问题(也许前端不是这样的)。因此,如果立志投身Web开发,开发的方法和技术必须知道,同时也必须要有扎实的算法和数据结构基础,以及扎实的计算机理论和工程的基本功,才能构建出可靠的网站。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值