我正在建立自己的种子" Mongo + Angular + Node + Node的部分原因是因为我想了解更多我所掩盖的细节,部分原因是我想要比yo
生成器提供更多的控制和结构。
我有几个问题,但所有问题的根源是缺乏对全栈(MEAN)JS应用程序的部署/维护的理解。为简洁起见,我将其称为FS JS应用程序。
通过理解几个基本问题的答案,我可以更自信地按照我的意愿设计我的种子。
node
?答案是肯定的,我想,但我只是想确定一下。
npm install
?这是我第一次遇到麻烦的地方。我已经看到很多种子将服务器代码构建到/dist/
子目录。这让我觉得我们应该把我们需要的所有内容捆绑到dist
并压缩它,或者我们应该安装npm
并从dist
而不是source
运行服务器/
目录 - 即zip / git package.json
所在的npm install
,将其复制到目的地,克隆/解压缩,然后app.js
。
我知道对于客户端文件,将它们捆绑在一起以节省网络开销是有意义的。因此,至少我们可以捆绑所有客户端文件并使用模块来模仿文件,整个文件结构可能只是Gulp
。甚至依赖项也可以合并到一个文件中,并且通常具有client
任务。
但是对于服务器来说,这是我应该尝试做的事情吗?如果是这样,任何提示?
同上
对于webpack
的东西,我通常会这样做:
babel
与es6
将es5
.js
转换为临时文件夹中的单个js
文件- bower_components
- node_modules
- source
- client
- common
- infrastructure
- utility
... ie tree-merger.js ...
- configuration
- client
- server
- express
- default.json
- production.environment.json
- default.json
- development.environment.json
- production.environment.json
- server
- task
- gulp
- ...
- client-webpack.js
- ...
- server-build.js
- ...
- target
- .tmp (temp)
- development
- source
(carbon copy of source, except injections are done where needed and SCSS is built into CSS. Reads from bower_components as needed.)
- test
- ???
- production
- bin
- client
- app.js
- app.css
image
- server
???
文件中,例如缩小或者uglify,一次一个。<div class="hpanel" ng-repeat="section in sections">
<div class="panel-body">
<div class="row">
<div class="col-xs-12">
<ul class="list-inline">
<li>
<h5>
<b>SecID</b>
</h5>
<span>{{section.section_id}}</span>
</li>
<li>
<h5>
<b>Section Name</b>
</h5>
<span>{{section.section_name}}</span>
</li>
</ul>
<hr/>
<button ng-click="section.new_section_history = section.section_history">copy row</button>
<table>
<tr>
<td ng-repeat="label in labelIndex">
{{label.label}}
</td>
</tr>
<tr>
<td ng-repeat="label in labelIndex">
{{section.section_history[label.index]}}
</td>
</tr>
<tr>
<td ng-repeat="label in labelIndex">
<input ng-model="section.new_section_history[label.index]"/>
</td>
</tr>
<tr>
<td ng-repeat="label in labelIndex">
<button ng-click="section.new_section_history[label.index] = section.section_history[label.index]">copy</button>
</td>
</tr>
</table>
</div>
</div>
</div>
</div>
答案 0 :(得分:1)
FS JS应用程序在开发中是否与开发中的方式相同,即通过调用节点?
是。但是,在生产中,您应该编写一些init脚本来监视您的node
实例并重新运行它,如果它由于某种原因崩溃
专业人士如何部署FS JS应用程序?有形的部署文件是什么样的?安装是否仍然通过npm安装?
npm install
非常好,但请记住,你绝对应该记录npm-shrinkwrap.json
文件(通过运行npm shrinkwrap
)。除此之外,你可以使用你喜欢的任何与节点无关的工具进行部署(即使是简单的shell脚本也是如此。当我的项目变大时,我用Python
脚本替换它。)
我没有看到缩小/表示服务器端代码的原因。您可以轻松地按照原样运行来源,在需要的时间对其进行宣传(babel-register
可以用于此)。此外,es6 import
被转换为节点的标准resolve
s,因此不需要内联&#39;依赖。也许缩小会给你带来一些速度(理论上,它应该是非常小的),但它绝对不值得,除非你的应用程序是Facebook般大的;我想,这回答了其余的问题。