宝哥软件园

nodejs开发微博示例

编辑:宝哥软件园 来源:互联网 时间:2021-09-09

我之前一直痴迷于前端开发。最近几天,我开始学习nodejs。作为一个前端开发人员,看到这样一个用javascript编写的背景是非常令人兴奋的。不过毕竟后台和前端不一样,学习过程中还是有很多问题的。

为了开始学习nodejs,我一开始选择了《深入浅出nodejs》这本书。看了几章,得出结论,确实是一本好书,但还是写不出nodejs!然后我选择了另一本教材,《nodejs开发指南》。看完《深入浅出nodejs》,跳过了这本书的前几章,在这本书的第五章写了一个微博的例子。作为一个新手,在写作过程中,逐渐发现书中很多代码因为express版本的升级而无法使用,对于新手来说是一次痛苦的经历!本着分享学习的精神,在此呈现《nodejs开发指南》微博示例express4.x的源代码以及编译过程中需要注意的问题。

首先,让我们来看看当前版本的express:

这与书籍中使用的express2.x版本有很大的不同。对于express4的新功能,你可以看看这个:http://scotch.io/bar-talk/Express JS-4-0-新功能-从-3-0升级

话不多说,我们开始了创建项目的旅程。

首先,我们创建一个新文件夹,用cmd输入文件夹,准备创建一个项目。根据该书,创建项目的命令应该是:

express -t ejs微博的问题是express -t参数已经过期,最新express版本的默认模板引擎是jade,所以为了使用ejs,我们需要创建一个项目,如下所示:

Express -e ejs微博根据书上说,我们直接运行代码:

Supervisor app.js,在浏览器中输入http://localhost:3000/即可,在书上看不到需要的效果,但在app.js中需要app.use('/',routes);添加以下内容:

app . listen(3000);Console.log(正在发生的事情);按照书中的步骤,我们会发现一个问题,因为views文件夹中没有layout.ejs和index.ejs。这是因为最新版本的express不支持ejs模块的partials方法,所以需要自己安装额外的模块:

Npm安装express-partials,然后在app.js中添加:

var partials=required(' express-partials ');app . use(partials());需要注意的是,这一行应该添加到app.set('view engine ',' ejs ');稍后,如果您将其添加到app.use('/',routes);后来css引用失败,博主还是不明白为什么。

此时,您可以在视图中创建新的文件layout.ejs,然后将书中112页的layout.ejs代码复制到新创建的文件中。然后运行代码,可以看到以下效果:

以上步骤都不是问题,问题在于连接数据库的一系列问题!如下所示:

为了执行以下操作,我们首先需要安装MongoDB数据库,博主推荐这个博客:http://be-evil.org/install-mongodb-on-windows7.html

我看了很多安装了MongoDB的博客,这是博主看过的最有效的博客。

对于新版本的express,根据书连接数据库会报错。连接数据库需要的文件是settings.js,按照书上说没问题,但是models中的db.js需要更改。根据书中的代码:

var设置=要求('./settings’);var Db=require('mongodb ')。db;var Connection=require('mongodb ')。连接;var Server=require('mongodb ')。服务器;模块.导出=新的db(设置. Db,新的服务器(设置.主机,连接。DEFAULT_ PORT,{ });可能会出现以下问题:

博主谷歌后,我发现我需要用以下格式写:

var设置=要求('./settings '),Db=require('mongodb ')。数据库,连接=要求(' mongodb ')。连接,服务器=要求(' mongodb ')。服务器;模块.导出=新的db(设置. Db,新的服务器(设置.主机,连接。DEFAULT_PORT,{}),{ safe : true });当提到设置模块时,如果你按照书上说的:

var设置=要求('./settings’);会有:

这是因为最新的快速版本需要参考此模块,如下所示:

var设置=要求('。/settings’);然而,在解决了这个问题之后,以下痛苦的情况相继出现:

一开始我想不出来,但我在谷歌的时候,一个哥们给了一个很好的答案:

http://www.cnblogs.com/yumianhu/p/3709558.html

也就是说,在express4中,我们需要自己安装express-session包,然后添加引用:

var session=require(' express-session ');原始数据库引用也需要更改为:

var MongoStore=require(' connect-mongo ')(会话);这些代码:

app . use(express . session({ secret : settings . cookie _ secret,store : new Mongostore({ db : settings . db })});需要重写为:

app . use(session({ secret : settings . cookie _ secret,store : NewMongostore({ db : settings . db,})}));对于书中提到的视图交互,原代码是:

app . dynamichelpers({ user : function(req,RES){ return req . session . user;},error:函数(req,RES){ var err=req . flash(' error ');if (err.length)返回err否则返回null},success:函数(req,RES){ var succ=req . flash(' success ');if(suc . length)返回succ否则返回null}, });在最新版本的express中,它需要更改为:

app.use(function(req,res,next){ console . log(' app . usr local ');RES . locals . user=req . session . user;RES . locals . post=req . session . post;var error=req . flash(' error ');res.locals.error=error.length?错误: nullvar success=req . flash(' success ');RES . locals . success=success . length?成功: nullnext();});注册页面使用了Flash,但是最新版本的express不再支持flash,所以需要先使用npm install connect-flash。然后在app.js中添加下面的代码:

app . use(flash());接下来按照书中的步骤,基本上就不会有问题了。最后,我们可以得到我们想要的结果~:

需要注意的是,用书写这个小应用的时候,有很多问题,也就是上面遇到的很多问题,但是博主们保持着谷歌独立研究的精神,最终跳出上帝的坑,得到了最终的结果。希望看到这个博客的朋友仔细研究一下,好好看看下面的链接,大概也是你遇到的问题。如果你在用书写代码的过程中遇到问题,请和他们沟通~

以上就是本文的全部内容。请花一点时间与你的朋友分享这篇文章或留下评论。我们将真诚感谢您的支持!

更多资讯
游戏推荐
更多+