NodeJS + expressJS:服务器端与客户端html呈现

时间:2015-01-03 01:46:20

标签: javascript angularjs node.js express

我是nodejs的新手,对服务器和客户端html页面之间的区别有点困惑。我的目标是为实践建立一个电子商务网络商店。我想尝试的堆栈是NodeJS + Express + MongoDB + AngularJS。我现在的基本结构如下。

shoppingMall
..bin
..data
..node_modules
..public
....images
....javascripts
....stylesheets
..routes
....index.js
....users.js
..views
....index.jade
....layout.jade
..app.js
..package.json

这是我的逻辑。 views中的文件是从服务器呈现的html页面。 public/javascripts/内的Javascript文件在客户端上呈现。我必须在AngularJS中包含layout.jade,并且与索引页面相关的任何客户端代码都应转到public/javascripts/index.js,我必须在index.jade中包含此文件。然后,使用玉模板引擎从服务器呈现html页面,并且从客户端完成任何进一步的用户交互。与index.jade相关的任何服务器端逻辑都必须转到routes/index.js,并且此文件中的代码不会显示给客户端。

Q1。我的逻辑是否正确?

Q2。假设我试图将其保留为MVC结构,在这种情况下哪些部分对应于M,V,C?

1 个答案:

答案 0 :(得分:0)

Q1。我的逻辑是否正确?

我的经验表明你的逻辑不正确。因为当我们使用Angularjs时,不需要服务器端模板引擎(在您的情况下,jade)。 Angular本身能够呈现动态数据。

您可以在这里使用node和express来为您的购物车的所有功能构建API端点,然后在Angular中编写所有视图(前端和后端)。

Q2。假设我试图将其保持为MVC结构,在这种情况下哪些部分对应于M,V,C?

在角度视图中是应用了指令和过滤器的html页面。这表示应用程序的UI端。控制器是观点的大脑。

视图从控制器获取数据以显示。控制器通常使用服务或工厂从API获取数据。 Controller使用一个名为$ scope的对象将数据传递到视图中。在angular world中,您可以将此$ scope对象视为视图模型。它会粘合视图和控制器。

所以在你的例子中,

/public
     /javascripts
         /item
          ..item.html // view
          ..item.js   // controller (might include the services for item api calls or write a seperate js file for them)