我是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?
答案 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)