Axhub发布后的项目如何给他人修改项目,然后由他人发布

这是一个资产管理项目,主要的目的就是实现对资产的无纸化管理。通过为每个资产生成二维码,来联合移动终端完成对资产的审核等。这个项目既提供了Web端的管理界面也提供移动端(Andorid)的资产审核、派发等相关功能。


功能简介:loader- 资源加载工具,可以区分开发模式、发布模式;在发布模式下可进行资源压缩、合并。以实现减少静态资源带宽并且便于实现客户端缓存

项目doc下有四个shell文件:

将它们copy到当前用户的home目录下,依次执行即可。整个过程几乎实现了无需人为干涉的“自动化”。

pm2是非常优秀工具,它提供对基于node.js的项目运行托管服务。它基于命令行界面,提供很多特性:

关闭不稳定的进程(避免无限死循环)

远程控制以及实时监控接口

pm2使用nodecluster构建一个内置的负载均衡器。部署多个app的实例来达到分流的目的以减轻单app处理的压力。

node.js 到处都是异步调用。常用的try/catch同步捕获异常并处理的方式,在这里不起作用了。这是因为很多callback已经离开了当时try的上下文,导致无法获取异常产生的堆栈信息。基于这个问题,我们对异常处理的模式按类型进行区分处理:

这种异常Express就可以进行处理。如果是非法请求,在路由的时候,对未匹配的请求进行统一处理:

 

这种异常通常不会影响到程序的运行,我们以不同的异常代码返回给前端或者终端,来给调用端友好的提示。
(3)应用程序级别的异常或必须处理的错误
这种情况下,应用程序可能没有办法处理异常,也有可能由应用程序抛出。对于这种应用程序级别的异常。我们用两种方式来catch:
[1]利用Express提供的应用程序的异常处理机制:

  
  
 
[2]应用程序已经无法响应处理了,则利用node.js提供的,对于进程级别的异常处理方式:
 
这两种应用程序级别的异常,优先级都比较高,因此我们采用了邮件通知的策略,来辅助开发人员进行快速定位并修复。

web应用中对于资源的定义大致分为:静态资源、动态资源两种。动态资源通常是可变的,需要进行相应处理的,而静态资源在线上通常都是不会变的。常见的静态资源有:javascript文件、css文件、图片文件等。对于这些静态文件,我们通过设置过期时间来进行缓存。而对于文本文件,由于浏览器的解析行为,对他们进行合并或者压缩都不会产生影响。
这里需要提到我们在组件中介绍的Loader。在项目刚被clone下来的时候,需要先执行makebuild来对项目进行初始化。在初始化的过程中,Loader会对项目的views文件夹中的文件进行扫描。它通常会扫描html界面:查找类似于如下的片段:
  
 
 
  
  去查找.css()以及.js()方法中的这些路径参数,并对这些文件进行合并或压缩混淆(这取决于配置),来产生一份assets.json(资产列表)文件。这里面定义了一些键值对,键为上面代码段中Loader()方法后面跟的参数,值为具体合并后文件的路径。这样,Loader会根据配置来判断加载类型。如果当前为开发模式或者为debug模式,则调用.js()/.css(),基于其中的路径参数来生成<script/>
 。如果为发布模式,则根据.done()里的assets键值对,结合Loader()的参数,来输出合并后的文件。以减少前端http请求数量以及总大小。对publich文件夹下的文件,设置静态文件缓存:
  
 
因为设置了缓存,在重新改动这些静态文件再发布的时候,如果缓存时间太长,则客户端的静态文件可能不会被替换。对于这个问题,Loader通过在文件的后缀追加一个版本号来作为参数。这样,当重新生成assets.json的时候每个文件会产生新的版本号,浏览器会请求“新文件”替换掉客户端老的缓存文件。

Restful以“Resource”为核心概念,认为URL是用来表示一种资源。而不应该表示一个动作或者其他的东西。而动作,比如“CRUD”正好对应http的四个method:get/post/put/delete。本项目中,我们大部分的URL以Restful风格为主,但没有严格贯彻执行。
前端我们采用的是ejs的模板来构建,它很好得实现了html的片段化、组件化。有一个基础的模板,别的都只是一块html片段。它们在服务端完成组合、解析,生成完整的html流输出到客户端。
这样的开发模式,使得前端代码的划分比较清晰,组件化也使得代码的复用变得更容易。
在项目初始化的过程中,我们使用makefile文件来使得一些动作自动化运行。比如我们之前提到过的构建assets.json来合并文件的动作,就是通过执行makebuild文件来完成的。
目前,Node.js还没有很强大的调试工具。常用的辅助诊断方式就是打log。但繁多的日志输出,混杂在http log里实在是不方便判断。我们在项目中使用了debug module来进行debug,他支持对log加不同颜色的key word并且还支持timestamp。你在一大堆日志中,一眼就足以区分是从哪个module或者组件输出的。我们在项目中对不同的layer应用不同的关键字:
  
 
  
 
  
 
由于边摸索边构建,在代码规范性上还有待进一步重构。同时,对CNode官方社区的开源代码表示感谢,它真的让我们学到了许多。本文所述项目开源在github

  河北聚日实业有限公司是集设计、生产、销售太铁塔的集团企业。公司位于历史古郡也是西汉儒相董仲舒故里的“广川镇”,占地36万平方米,注册资金13600万元,现有员工600多名,其中高、中级技术人员占半数以上。公司下设河北聚日钢结构工程有限公司、景县通信器材厂、聚日太阳能分公司。 ...

邮箱: 邮编:053500
地址:河北省衡水市景县广川工业区

我要回帖

更多关于 github是什么东西 的文章

 

随机推荐