内容简介:Nrwl是angular-cli的超集,扩展了angular-cli原理图与构建器,可以实现monorepo风格的开发。你可以在工作区中同时使用angular与react构建使用不同框架的前端应用程序,同时可以包含nodejs后台应用程序实现在同一存储库中开发全栈应用。
Nrwl是angular-cli的超集,扩展了angular-cli原理图与构建器,可以实现monorepo风格的开发。你可以在工作区中同时使用angular与react构建使用不同框架的前端应用程序,同时可以包含nodejs后台应用程序实现在同一存储库中开发全栈应用。
安装
npm install -g @nrwl/schematics
创建应用程序
创建工作区
npx
使用请看阮一峰教程。
npx --ignore-existing create-nx-workspace myorg
创建过程中可以选择工作区类型:
empty [an empty workspace] angular [a workspace with a single Angular application] angular-ivy [a workspace with a single Angular application built using Ivy] react [a workspace with a single React application] web components [a workspace with a single app built using web components] full-stack [a workspace with a full stack application (NestJS + Angular Ivy)] 复制代码
创建完成后 myorg
目录中的内容为:
myorg/ ├── apps/ ├── libs/ ├── tools/ ├── nx.json ├── angular.json ├── package.json ├── tsconfig.json ├── tslint.json └── README.md 复制代码
创建angular应用程序
首先添加创建angular应用程序的功能:
ng add @nrwl/angular
也可添加不同功能的应用程序:
ng add @nrwl/angular # Adds Angular capabilities ng add @nrwl/react # Adds React capabilities ng add @nrwl/nest # Adds Nest capabilities ng add @nrwl/express # Adds Express capabilities ng add @nrwl/web # Adds Web capabilities ng add @nrwl/node # Adds Node capabilities 复制代码
然后创建angular应用程序:
ng g @nrwl/angular:application todos
创建完成后目录内容为:
myorg/ ├── apps/ │ ├── todos/ │ │ ├── src/ │ │ │ ├── app/ │ │ │ ├── assets/ │ │ │ ├── environments/ │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ ├── polyfills.ts │ │ │ ├── styles.scss │ │ │ └── test.ts │ │ ├── browserslist │ │ ├── jest.conf.js │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ ├── tsconfig.spec.json │ │ └── tslint.json │ └── todos-e2e/ │ ├── src/ │ │ ├── fixtures/ │ │ │ └── example.json │ │ ├── integration/ │ │ │ └── app.spec.ts │ │ ├── plugins/ │ │ │ └── index.ts │ │ └── support/ │ │ ├── app.po.ts │ │ ├── commands.ts │ │ └── index.ts │ ├── cypress.json │ ├── tsconfig.e2e.json │ ├── tsconfig.json │ └── tslint.json ├── libs/ ├── tools/ ├── angular.json ├── nx.json ├── package.json ├── tsconfig.json ├── tslint.json └── README.md 复制代码
运行应用程序
ng serve todos 复制代码
创建react应用程序
首先添加创建react应用程序的功能:
ng add @nrwl/react
然后创建react应用程序:
ng g @nrwl/react:app reactapp
创建完成后目录内容为:
happynrwl/ ├── apps/ │ ├── todos/ │ ├── todos-e2e/ │ ├── reactapp/ │ │ ├── src/ │ │ │ ├── app/ │ │ │ │ ├── app.css │ │ │ │ ├── app.spec.tsx │ │ │ │ └── app.tsx │ │ │ ├── assets/ │ │ │ ├── environments/ │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ ├── polyfills.ts │ │ │ ├── styles.scss │ │ │ └── test.ts │ │ ├── browserslist │ │ ├── jest.conf.js │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ ├── tsconfig.spec.json │ │ └── tslint.json │ └── reactapp-e2e/ │ ├── src/ │ │ ├── integrations/ │ │ │ └── app.spec.ts │ │ ├── fixtures/ │ │ ├── plugins/ │ │ └── support/ │ ├── cypress.json │ ├── tsconfig.e2e.json │ └── tslint.json ├── libs/ ├── README.md ├── angular.json ├── nx.json ├── package.json ├── tools/ ├── tsconfig.json └── tslint.json 复制代码
运行应用程序
ng serve reactapp
添加node应用程序
添加nest.js的功能
ng add @nrwl/nest
添加express.js的功能
ng add @nrwl/express
添加node.js的功能
ng add @nrwl/node
创建nest应用程序
ng g @nrwl/nest:app api --frontendProject=todos
--frontendProject=todos
将为angular应用程序与api创建代理配置。
创建完成后目录内容为:
myorg/ ├── apps/ │ ├── todos/ │ ├── todos-e2e/ │ └── api/ │ ├── jest.conf.js │ ├── proxy.conf.json │ ├── src/ │ │ ├── app/ │ │ │ ├── app.controller.ts │ │ │ ├── app.controller.spec.ts │ │ │ ├── app.module.ts │ │ │ ├── app.service.ts │ │ │ └── app.service.spec.ts │ │ ├── assets/ │ │ ├── environments/ │ │ │ ├── environment.ts │ │ │ └── environment.prod.ts │ │ └── main.ts │ ├── tsconfig.app.json │ ├── tsconfig.json │ ├── tsconfig.spec.json │ └── tslint.json ├── libs/ ├── nx.json ├── package.json ├── tools/ ├── tsconfig.json └── tslint.json 复制代码
运行应用程序
ng serve api
创建共享代码库
创建angular与nest公共接口
ng g @nrwl/workspace:lib data
创建完成后目录内容为:
myorg/ ├── apps/ │ ├── todos/ │ ├── todos-e2e/ │ └── api/ ├── libs/ │ └── data/ │ ├── jest.conf.js │ ├── src/ │ │ ├── lib/ │ │ │ └── data.ts │ │ └── index.ts │ ├── tsconfig.app.json │ ├── tsconfig.json │ ├── tsconfig.spec.json │ └── tslint.json ├── nx.json ├── package.json ├── tools/ ├── tsconfig.json └── tslint.json 复制代码
在data.ts定义接口:
export interface Todo { title: string; } 复制代码
在angular中使用:
import { Todo } from '@myorg/data'; 复制代码
创建angular组件库
ng g @nrwl/angular:lib ui
创建完成后目录内容为:
myorg/ ├── apps/ │ ├── todos/ │ ├── todos-e2e/ │ └── api/ ├── libs/ │ ├── data/ │ └── ui/ │ ├── jest.conf.js │ ├── src/ │ │ ├── lib/ │ │ │ ├── ui.module.spec.ts │ │ │ └── ui.module.ts │ │ └── index.ts │ ├── tsconfig.app.json │ ├── tsconfig.json │ ├── tsconfig.spec.json │ └── tslint.json ├── nx.json ├── package.json ├── tools/ ├── tsconfig.json └── tslint.json 复制代码
添加组件
ng g component todos --project=ui --export
注册 CUSTOM_ELEMENTS_SCHEMA
模式,这将告诉Angular编译器在组件模板中看到非标准元素标签时不会出错。
//app.module import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; @NgModule({ ... schemas: [CUSTOM_ELEMENTS_SCHEMA], ... }) export class AppModule {} 复制代码
使用方法同angular-cli创建的lib相同。
创建angular与react共享组件库
ng g @nrwl/workspace:lib ui
myorg/ ├── apps/ │ ├── todos/ │ ├── todos-e2e/ │ ├── reactapp/ │ └── reactapp-e2e/ ├── libs/ │ └── ui │ ├── src/ │ │ ├── lib/ │ │ └── index.ts │ ├── jest.conf.js │ ├── tsconfig.lib.json │ ├── tsconfig.json │ ├── tsconfig.spec.json │ └── tslint.json ├── README.md ├── angular.json ├── nx.json ├── package.json ├── tools/ ├── tsconfig.json └── tslint.json 复制代码
在lib下面创建greeting.element.ts组件:
export class GreetingElement extends HTMLElement { public static observedAttributes = ['title']; attributeChangedCallback() { this.innerHTML = `<h1>Welcome to ${this.title}!</h1>`; } } customElements.define('happynrwl-greeting', GreetingElement); 复制代码
并在index.js导出
export * from './lib/greeting.element'; 复制代码
在angular中使用
在main.js导入
import '@myorg/ui'; // <-- the new library 复制代码
在app.module注册 CUSTOM_ELEMENTS_SCHEMA
,然后就可以在angular中使用。
在react中使用
在main.tsx中导入:
import '@happynrwl/ui'; 复制代码
在 src
下面添加 intrinsic.d.ts
文件,创建如下内容:
declare namespace JSX { interface IntrinsicElements { [elemName: string]: any; } } 复制代码
在app.tsx中使用:
import * as React from 'react'; import { Component } from 'react'; import './app.css'; export class App extends Component { render() { const title = 'reactapp'; return ( ... <happynrwl-greeting title={title} /> ... ); } } 复制代码
创建项目依赖图
Nx工作区可以包含几十个应用程序与库,随着代码库的增长,可以使用 npm run dep-graph
命令在浏览器中输出一个工作区依赖图。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 谷歌开源项目风格指南之 Python 风格指南
- 配置eslint规范项目代码风格
- VS Code书写vue项目配置 eslint+prettier 统一代码风格
- win10 风格的 OA 管理系统 skyeye 更新,新增项目模块
- JavaScript代码风格要素
- Flutter主题风格
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
计算机网络(第6版)
[美] James F.Kurose、[美] Keith W.Ross / 陈鸣 / 机械工业出版社 / 2014-10 / 79.00元
《计算机网络:自顶向下方法(原书第6版)》第1版于12年前出版,首创采用自顶向下的方法讲解计算机网络的原理和协议,出版以来已被几百所大学和学院选用,是业界最经典的计算机网络教材之一。 《计算机网络:自顶向下方法(原书第6版)》第6版继续保持了以前版本的特色,为计算机网络教学提供了一种新颖和与时俱进的方法,同时也进行了相当多的修订和更新:第1章更多地关注时下,更新了接入网的论述;第2章用pyt......一起来看看 《计算机网络(第6版)》 这本书的介绍吧!
html转js在线工具
html转js在线工具
HEX HSV 转换工具
HEX HSV 互换工具