“由企業級工程師開發的Angular + NodeJS(Typescript)框架!”

首先

好久不见,这是我很久以来的一次发布。

这篇文章已经在GitHub上公开了,链接为https://github.com/tsunaki00/GAUSS-Framework-Angular。

由於這次我們公開了在內部使用的Web框架,所以我想寫一下相關的說明。
以前,我在一家大型製造企業擔任系統架構師,負責開發框架相關的工作。

我在使用Twitter。请关注我。

我們使用人工智能運營著競馬預測應用程式SIVA。
我們會在體育報紙的頭版上刊登預測結果。

为了什么

我們的目標如下:
(1) 確保程式品質(標準化)
(2) 平衡開發者的技能水平
(3) 建立一套能在企業系統中快速掌握面向對象程式設計的概念的能力

背景(问题)

(1) 每次开始案件都必须选择架构。
※ 选择范围太广而难以选择(全栈开发)。
(2) 跟上快速发展的程序很困难。
(3) 从企业背景中来做过强大系统的人很多不擅长JavaScript。

※ 补充
通过利用这个框架,即使是没有编程经验的人也能轻松地进行服务开发。
如果您有兴趣,请务必尝试使用!

前提是指在讨论或行动之前必须满足的条件或假设。

GAUSS框架将作为GAUSS内部Web系统开发的共同基础设施来利用。
这次将解释前端架构。

◇ GAUSS Framework的内容
・前端(Angular6)
・后端(Nest5)
后端的开发可以使用Swagger进行开发。
※我们已经准备了关系型数据库和非关系型数据库。

◇ 开发目标人员(必备技能)]
・HTML5
・CSS3(sass)
・Javascript(ECMAScript 6~)

※什么是框架?
框架是指将常用功能整合并提供给应用程序开发时常常所需的软件,可以作为应用程序的基础功能。最初的意思是指框架、底层构想、结构、组织等概念的英语单词。

框架是应用程序的模板,在开发中使用它可以显著提高效率。

スクリーンショット 2018-11-11 14.35.36.png

整个框架的概览

GAUSS框架采用Angular作为客户端处理,并以nest为基础构建服务器处理。

framework_overview.png
front_architecture.png

每个组件的主要行为

看+一下

View是一个层,用于显示静态信息,如HTML和图像,并从Model中获取并显示相关数据。
View的作用是仅描述布局。描述方法使用HTML和Directive。
※1 禁止在行内实现JavaScript,CSS。
※2 Directive(指令)是…

在Angular中有以下三种指令:
– 组件(Component)——带有模板的指令
– 结构指令(Structural directives)——用于添加或删除DOM元素以改变DOM布局的指令
– 属性指令(Attribute directives)——用于改变其他指令的外观或行为的指令

控制器

控制器的角色是设置范围,根据用户的操作调用模型的方法等进行处理。

将服务调用与作用域相关联
将模型事件通知与作用域相关联
在控制器中编写演示逻辑
※ 尽量简化,将业务逻辑写在模型中

模型

Model负责处理与演示无关的所有部分。
– 业务逻辑
– 数据容器
– 与服务器端的通信处理
– 本地存储处理

目录结构

スクリーンショット 2018-11-11 14.34.38.png
スクリーンショット 2018-11-11 14.28.47.png
スクリーンショット 2018-11-11 14.29.00.png

搭建框架环境步骤

任务内容

・STEP 1.事前準備
 → 必用なミドルウェアをインストール
・STEP 2.実行環境の構築(Frontend)
  → プログラムの取得から実行環境の構築、アプリケーションの起動
・STEP 3.実行環境の構築(Backend)
  → プログラムの取得から実行環境の構築、アプリケーションの起動

必须安装必要的中间件(Docker)。

请从以下网站下载安装包,并按照步骤进行安装。(如果已经安装请忽略)

図1.png

第2步:建立执行环境(前端)

从代码库中获取程序。

(1) 在终端中运行以下命令来获取程序。

$ git clone https://github.com/tsunaki00/GAUSS-Framework-Angular.git
$ cd GAUSS-Framework-NoSQL

(2)请在终端中运行以下命令来获取程序。
(第一次运行可能需要花费一些时间)

$ docker-compose up -d 
 :
 :
Starting gaussframeworknosql_frontend_1      ... done
Starting gaussframeworknosql_mongodb_1       ... done
Starting gaussframeworknosql_mongo-express_1 ... done
Starting gaussframeworknosql_backend_1       ... done
Starting gaussframeworknosql_nginx_1         ... done

执行以下命令,登录到docker容器中。

$ docker exec -it gaussframeworknosql_frontend_1 sh
app #

※ 根据设置获取 Docker 主机名(使用 docker-compose 来绑定会更方便)。

(4) 登录Docker后,运行以下命令来安装软件包。

/app # yarn install
yarn install v1.6.0
[1/4] Resolving packages...
[2/4] Fetching packages...
info fsevents@1.2.4: The platform "linux" is incompatible with this module.
info "fsevents@1.2.4" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
warning " > bootstrap@4.1.1" has unmet peer dependency "jquery@1.9.1 - 3".
warning " > bootstrap@4.1.1" has unmet peer dependency "popper.js@^1.14.3".
warning "ngx-tags-input > @angular/common@5.2.11" has incorrect peer dependency "rxjs@^5.5.0".
warning "ngx-tags-input > @angular/core@5.2.11" has incorrect peer dependency "rxjs@^5.5.0".
warning "ngx-tags-input > @angular/forms@5.2.11" has incorrect peer dependency "rxjs@^5.5.0".
warning "ngx-tags-input > @angular/forms@5.2.11" has incorrect peer dependency "@angular/platform-browser@5.2.11".
warning " > karma-jasmine-html-reporter@1.1.0" has unmet peer dependency "jasmine@>=3".
[4/4] Building fresh packages...
Done in 151.28s.
/app #

执行以下命令以启动应用程序服务器。

/app # yarn start
yarn run v1.6.0
:chunk main main.js, main.js.map (main) 69 kB [initial] [rendered]chunk
polyfills polyfills.js, polyfills.js.map (polyfills) 227 kB [initial] [rendered]chunk runtime runtime.js, runtime.js.map (runtime) 5.22 kB [entry]
[rendered]chunk scripts scripts.js, scripts.js.map (scripts) 2.4 MB 
[rendered]chunk styles styles.js, styles.js.map (styles) 419 kB [initial] [rendered]chunk vendor vendor.js, vendor.js.map (vendor) 7.5 MB [initial] [rendered]ℹ 「wdm」: Compiled successfully. 
図1.png

第三步 配置执行环境(后端)

后端支持Swagger开发。

(1) 执行以下命令,以登录到Docker容器中。

$ docker exec -it gaussframeworknosql_backend_1 sh
app #

(4)在登录Docker后,执行以下命令以安装包。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/52867/af4572c4-2aaf-3b0b-7e64-6b868203f6ee.png)
/app # yarn install
yarn install v1.6.0
[1/4] Resolving packages...
[2/4] Fetching packages...
info fsevents@1.2.4: The platform "linux" is incompatible with this module.
info "fsevents@1.2.4" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
warning " > bootstrap@4.1.1" has unmet peer dependency "jquery@1.9.1 - 3".
warning " > bootstrap@4.1.1" has unmet peer dependency "popper.js@^1.14.3".
warning "ngx-tags-input > @angular/common@5.2.11" has incorrect peer dependency "rxjs@^5.5.0".
warning "ngx-tags-input > @angular/core@5.2.11" has incorrect peer dependency "rxjs@^5.5.0".
warning "ngx-tags-input > @angular/forms@5.2.11" has incorrect peer dependency "rxjs@^5.5.0".
warning "ngx-tags-input > @angular/forms@5.2.11" has incorrect peer dependency "@angular/platform-browser@5.2.11".
warning " > karma-jasmine-html-reporter@1.1.0" has unmet peer dependency "jasmine@>=3".
[4/4] Building fresh packages...
Done in 151.28s.
/app #

执行以下命令将应用程序服务器启动。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/52867/37f42ff5-accb-35a4-523b-bbd78db9ad3d.png)
/app # yarn start
yarn run v1.6.0
:chunk main main.js, main.js.map (main) 69 kB [initial] [rendered]chunk
polyfills polyfills.js, polyfills.js.map (polyfills) 227 kB [initial] [rendered]chunk runtime runtime.js, runtime.js.map (runtime) 5.22 kB [entry]
[rendered]chunk scripts scripts.js, scripts.js.map (scripts) 2.4 MB 
[rendered]chunk styles styles.js, styles.js.map (styles) 419 kB [initial] [rendered]chunk vendor vendor.js, vendor.js.map (vendor) 7.5 MB [initial] [rendered]ℹ 「wdm」: Compiled successfully. 

(6) 请确保启动成功
在浏览器(Google Chrome)的地址栏中输入”http://localhost:3001/api”并访问。

図1.png

最后的

请务必使用提供的教程,以便在启动后创建Todo应用程序。请尽情利用。

我在使用Twitter,请关注我。

我正在使用人工智能来运营赛马预测SIVA。
我们会在体育新闻的头版上发布预测结果。

广告
将在 10 秒后关闭
bannerAds