"JavaScript offre des opportunités d'évolutivité immense s'il est correctement architecturé", déclare NativeScript.
Cela semble bien, mais comment créez-vous réellement un "monorepo intégré" pour vos applications Angular (web) et Angular NativeScript (Android, iOS) ? La documentation de NativeScript suggère d'utiliser Nrwl Nx DevTools avec @nativescript/nx , et c'est génial.
# 0. Install NPM LTS globally
$ nvm install --lts
# 1. Install Angular CLI globally
$ npm install -g @angular/cli
# 2. Install NativeScript CLI globally
$ npm install -g nativescript
# 3. Install Nrwl Nx CLI globally
$ npm install -g nx
# 4. Generate a new Nx workspace with an empty integrated monorepo
$ npx create-nx-workspace@latest angular-nativescript-workspace
# 5. Navigate to the Nx-workspace directory
$ cd angular-nativescript-workspace
# 6. Install NativeScript and Angular plugins
$ npm install --save-dev @nativescript/nx @nativescript/angular @nativescript/android @nativescript/ios @nrwl/angular
# 7. Generate a new Angular web app with SCSS, routing enabled, and no Standalone Components
$ nx generate @nrwl/angular:application --name=web-app
# 8. Generate a new NativeScript mobile app with Angular as the front end
$ nx generate @nativescript/nx:application --name=mobile-app
# 9. Generate a new shared library with Jest and TSC
$ nx generate @nrwl/js:lib --name=shared
# 10. Generate shared TypeScript model classes for User, Game, and Item
$ touch libs/shared/src/lib/user.ts
$ touch libs/shared/src/lib/game.ts
$ touch libs/shared/src/lib/item.ts
# 11. Run the web app
$ nx serve web-app
# 12. Run the mobile app on an Android device or emulator
$ nx run nativescript-mobile-app:android
# 13. Run the mobile app on an iOS device or simulator
$ nx run nativescript-mobile-app:ios
export class User {
constructor(public id: number, public name: string) {}
}
export class Game {
constructor(public id: number, public title: string) {}
}
export class Item {
constructor(public id: number, public description: string) {}
}
export * from './lib/user';
export * from './lib/game';
export * from './lib/item';
import {Component} from '@angular/core';
import {User, Game, Item} from '@angular-nativescript-workspace/shared';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss'],
})
export class AppComponent {
user = new User(1, 'John Doe');
game = new Game(1, 'Example Game');
item = new Item(1, 'Example Item');
}
Embarquez pour un voyage passionnant d'innovation et de succès en exploitant le potentiel inexploité de ces surprenantes plateformes sans code. Permettez-moi de partager avec vous l'histoire de Sapna, une remarquable femme entrepreneure.
Cette semaine, j'ai reçu un e-mail d'un membre de la liste de diffusion quotidienne. Ils voulaient savoir : Quelles ressources consultez-vous quotidiennement, hebdomadairement et mensuellement ? Grande question ! Je suis heureux d'essayer de partager quelques idées sur mon flux de travail et les principales ressources que j'utilise.
Dans le paysage commercial en évolution rapide d'aujourd'hui, le concept de travail hybride et à distance a pris un élan sans précédent. Alors que les entreprises continuent de s'adapter à l'évolution des besoins et des attentes de leurs employés, des experts de divers domaines se sont réunis pour discuter des avantages, des défis et de l'avenir de cette façon de travailler transformatrice.
[Alerte de déclenchement : cet essai comprend des captures d'écran de personnes faisant l'éloge du meurtrier de Jordan Neely.] Les responsables de l'application des lois ont finalement - et peut-être à contrecœur - inculpé Daniel Penny, l'homme qui a étouffé Jordan Neely jusqu'à sa mort, pour cet homicide.
Il était minuit passé lorsque Hayden a ramené Katie à son dortoir universitaire après leur soirée ensemble. Elle avait un cours tôt le matin et n'avait plus de vêtements de rechange après être restée avec lui la nuit précédente.
La démangeaison dans ma main s'est propagée alors que je négociais avec le libraire local pour un autre livre. Ce livre, comme les autres que j'ai achetés récemment, trouverait son trône sur ma pile «À lire» (TBR); et pourtant, je l'ai acheté.