DAY4 - 认识Nx

在上一篇,建立起一个Angular+Nestjs的Nx专案,那麽这一篇就要来好好介绍什麽是Nx。

安装Nx扩充套件

在认识Nx之前,建议安装Nx官方的vs code扩充套件。因为Nx的功能很丰富,有太多功能了,没有办法把所有的指令都记住,所以安装官方扩充套件,用图形介面点一点的方式,就可以完成很多动作,不必去刻意记下指令

https://ithelp.ithome.com.tw/upload/images/20210919/20120107qAeQdIwvGq.png

例如要建立一个函式库,就输入你要建立的名字,再用勾选的方式修改细部设定,按下 RUN 之後,就建立起来了,连元件之间相依的问题与测试的设定,就一起帮你设定好了。

https://ithelp.ithome.com.tw/upload/images/20210919/20120107jeX7Fv6rpF.png

建立元件与服务

使用 CLI

在Nx 专案当中,不论是要建立前端或後端的元件或服务等等,如果习惯使用的是CLI,依然可以继续使用习惯的方式建立,像是建立前端名为hello的元件

ng generate component hello

後端也一样,建立名为hello的服务

nest generate service hello

使用 Nx 扩充套件点击

点击Nx图示的扩充套件,并且点击 Generate 的选项,就会跳出下拉选单询问要建立什麽样的元件

https://ithelp.ithome.com.tw/upload/images/20210919/20120107Jd8iFKd7yK.png

这里示范建立 Angular 的元件(component)
https://ithelp.ithome.com.tw/upload/images/20210919/20120107fOI4u2qxjD.png

使用图形化的方式建立元件,唯一必须要输入的就只有元件的名字,其他的选项都是选填,像是:

  • 要建立在哪个 project - monorepo最大的好处就是可以在一个专案建立好多个 project,让每个project 彼此共享程序码
  • 要建立在哪个module - 元件要隶属哪个模组,可以自动帮你搞定模组的注册与相依设定
  • 要使用的样式 - 可以选择使用 css 或 scss 等样式

以上举例几个我比较常用的功能,可以看到 Nx 想要帮助我们解决的问题是: 不要花时间在设定或是烦恼程序码之间的耦合与相依,这些Nx都帮你做好 ,让我们就专注在实现我们天马行空的想法,乐趣无限的Side Project 上面。

另外每当你输入了设定,Nx 都会执行 dryRun 模式,也就是帮你模拟执行你这些设定执行後的结果,看看是否正确或是想要的,但是不会真的执行。直到确定没有问题,按下 Run 的按钮之後,才会真正执行。

版本更新

使用套件最担心的就是套件的维护与更新的问题,问题不外乎是几种:

  • 如果里面的套件更新的(例如:React、Angular、Nestjs、Jest、Cypress),会跟着更新吗?
  • 如果更新了话,那要更新会很麻烦吗?

就笔者目前的经验,Nx 维护得蛮勤的,只要使用的套件有更新了(像我使用的是Angular + Nestjs)几乎不到一个月的时间,Nx 就会整合完毕更新上,而更新的方法也很简单

搬移

nx migrate latest

指令会将Nx更新到最新版本,同时也会更新这个版本最新的相依套件

安装

更新完相依套件的版号之後,再安装最新的套件

npm install(或yarn install)

更新

如果版本更新有什麽breaking change或是语法改变怎麽办?不用担心,Nx 会帮你检查,并且更新到新版本的语法

nx migrate --run-migrations=migrations.json

更新的过程就三个步骤,每次更新的步骤都一样,只要无脑下这三个指令就好,完全不用担心生心会坏掉之类的问题,唯一的缺点就是更新的时间有点久,建议有一段比较长的时间,就把电脑放着更新,这段期间可以去喝杯茶、喝杯咖啡配个好看的影片,笑呵呵等时间过去,这样就更新完了。

Nx 不只有这样

以上是对Nx 的简单入门介绍,介绍一些常用且实用的好功能,算是入门的操作。但是你以为Nx只有这样吗?

比如说,Nx 还可以帮你分析专案的相依与架构,让你随时可以掌握专案的状态,一目了然

https://ithelp.ithome.com.tw/upload/images/20210919/2012010778g1T8H4mm.png

其余的功能就留到之後再来介绍吧!


<<:  ASP.NET MVC 从入门到放弃(Day14)- Html Css 结构介绍

>>:  缺乏计画的目标,只能叫做愿望。----实行篇

Day 01 | 前言与赛程

从 2018 年介绍 Vue 的 UI Framework — Quasar ,到前年的 LINE ...

Day18 page fault, LRU, second chance

前言 前几天我们讲到的都是关於虚拟记忆体的资讯,包含VMA的结构,malloc() , mmap()...

Day 9 任务的形式

今天想发ARM的文章时,居然一直遇到这个画面: 虽然不确定是不是被攻击了,但後来还好可以连上主页了,...

[Day23] JavaScript 函式库 - React

终於要到了铁人赛的尾声了,笔者一直想在最後几篇来了解一下React,所以趁现在JavaScript应...

javascript流程控制-判断式1

现在来介绍if判断式跟else判断式 ...