尝试使用Angular8+Rails5来创建应用程序
尝试将Angular和Rails结合起来使用

由于我个人都喜欢这两个框架,所以如果这种结合的开发在世界上变得更加普遍,我会感到非常高兴。
Angular8和Rails5(*以下是文章的翻译)
我不知道你是怎么想的,但我喜欢Ruby on Rails,因为它易学、快速编写,并且是开源的。我也对引入了酷炫新渲染引擎Ivy的Angular的新版本Angular8的发布充满期待。
如果你和我一样对这两个框架感兴趣,但是对于如何入门这两个很棒的框架一点概念都没有的话,那么请务必阅读这个。
现在就开始试一试吧!
若要按照惯例将Javascript框架与Rails一起使用,就需要使用webpack。然而,Rails有一个称为webpacker的适用于此的宝石,可以运行Angular项目。然而,在最新版本(7系及以上)的Angular中,内部已经嵌入了webpack系统,这种项目结构问题将成为使用绝佳的AngularCLI的障碍。
我们需要做的是使用Rails应用作为一个具有控制器的API,接收Angular的输出文件并提供它们。
在开始之前,请安装以下内容。
-
- node (8.9以上)
-
- NPM (5.5.1以上)
-
- Angular CLI
-
- Rails 5+ (インストールにRVMまたはRbenvを使うことをおすすめします)
- Postgresql
创建一个Angular项目
在喜欢的目录位置打开终端,创建一个Rails/Angular项目。
ng new rails-angular-project
如果问你是否使用Angular routing,毫不犹豫地按下”YES”!(非常好用!)
然后请选择你喜欢的样式表格式。(我个人推荐使用SCSS)
完成以上步骤后,让我们跳转到刚刚创建的项目中。
cd rails-angular-project
1. 创建一个Rails项目
让我们在当前目录中创建一个Rails项目吧!
rails new . -database=postgresql
通过这个命令,会在Angular项目的内部开始创建Rails项目,但如果拒绝了所有的合并请求,就会发生冲突。
一旦Rails项目创建成功,就需要在.gitignore文件中添加一些文件。
请打开.gitignore文件,并复制粘贴以下内容。
# Ignore bundler config.
/.bundle
# Ignore all logfiles and tempfiles.
/log/*
/tmp/*
!/log/.keep
!/tmp/.keep
# Ignore uploaded files in development
/storage/*
!/storage/.keep
.byebug_history
# Ignore master key for decrypting credentials and more.
/config/master.key
# Ignore application configuration
/config/application.yml
将上述的两个合并为一体
目前,这个项目是一个与Angular项目结合的Rails应用程序,它使用Rails作为API提供,并且也享受了Angular框架的SPA的好处。但是首先必须允许Rails访问由Angular提供的文件。
通常情况下,在Angular应用程序中,我们使用`ng serve`来进行开发,但是这次我们将配置使用`ng build`,将输出到Rails的公共目录。
打开位于根目录下的 Angular.json 文件,将输出目录从 dist/rails-angular-app 改为 public。
...
"options": {
"outputPath": "public",
...
下一步,在app/controllers文件夹中创建一个名为static_controller.rb的文件。
class StaticController < Rails::ApplicationController
def index
render file: Rails.root.join('public', 'index.html')
end
end
static_controller负责通过Angular提供的index.html进行渲染。
请在routes.rb文件中加入以下代码。
Rails.application.routes.draw do
get '*other', to: 'static#index'
end
通过这个方法,你可以让Rails捕获路由并重定向到static_controller。此外,上述代码还可以定义需要的所有API路由。但这些内容我们留到下次讨论!
使用Foreman使得更方便
通过引入Foreman,我们可以更容易地提供Web应用程序。
请通过将gem添加到foreman中进行安装。
...
# Use foreman
gem 'foreman'
...
使用bundle install命令安装新的gem。
安装 bundler
在根目录中新增一个名为 Procfile 的文件。这个文件的作用是让 foreman 可以读取并组合所有的命令。
web: rails s -p 3000
client: ng build --watch=true
你可以用这个命令启动foreman。
开启工头
预计会同时启动Rails应用程序和Angular应用程序。当访问localhost:3000时,将显示以下屏幕。

太好了!现在你可以自由地开发Web应用并且使用简单而强大的框架提供API,同时还可以利用Angular CLI的能力。
5.最后
这次,我们制作了一个应用程序,它将Rails 5作为后端和Angular 8作为前端,它们存在于同一个目录中,并且充分发挥了它们各自的优势。希望这个教程对你有所帮助。
请参阅相关报道
Angular 8+ 与 Rails 5+ – Sam Green