2015-01-03 2 views
3

Я новичок в nodejs и немного смущен различием между страницами html и сервером на стороне клиента. Моя цель - создать интернет-магазин электронной коммерции для практики. Стек, который я хочу попробовать, это NodeJS + Express + MongoDB + AngularJS. У меня сейчас есть базовая структура, как показано ниже.NodeJS + expressJS: рендеринг html на стороне сервера и клиентской стороне

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-страницы, которые отображаются с сервера. Файлы Javascript внутри public/javascripts/ отображаются на клиенте. Я должен включить AngularJS внутри layout.jade, и любой код клиента, связанный с индексной страницей, должен перейти в public/javascripts/index.js, и я должен включить этот файл с index.jade. Затем html-страница выводится с сервера с использованием механизма шаблонов jade, и любое дальнейшее взаимодействие с пользователем выполняется с клиента. Любая логика на стороне сервера, связанная с index.jade, должна перейти в routes/index.js, а код, который живет внутри этого файла, не будет показан клиенту.

Q1. Правильно ли моя логика?

Q2. Предполагая, что я пытаюсь сохранить его как структуру MVC, какие части соответствуют M, V, C в этом случае?

ответ

0

Q1. Правильно ли моя логика?

В моем опыте написано, что ваша логика неверна. Поскольку при использовании Angularjs нет необходимости в серверном шаблоне (в вашем случае, jade). Сам угол способен отображать динамические данные.

Что вы можете здесь сделать, это использовать узел и выразить для создания конечных точек API для всех функций вашей корзины покупок, а затем написать все представления (как frontend, так и backend) в Angular.

Q2. Предполагая, что я пытаюсь сохранить его как структуру MVC, какие части соответствуют M, V, C в этом случае?

В угловом виде представлена ​​страница html с применяемыми директивами и фильтрами. Таким образом, это представляет собой пользовательский интерфейс приложения. Контроллеры - это мозг для взглядов.

Представления получают данные от контроллеров для отображения. Контроллеры часто извлекают данные из API, используя сервисы или фабрики. Контроллер использует объект с именем $ scope для передачи данных в поле зрения. В угловом мире вы можете рассматривать этот объект $ 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) 
+1

Спасибо! Тем не менее, я считаю, что AngularJS должен строго использоваться в интерфейсе. –