成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

怎么在Angular中使用cli生成自定義文件-創(chuàng)新互聯(lián)

這篇文章給大家介紹怎么在Angular中使用cli生成自定義文件,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

杞縣ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!

自定義原理圖

先看看我們的需求,我們現(xiàn)在項(xiàng)目的項(xiàng)目里面,頁面是page,按照angular原來的寫法,所有的page的組件都是:XXXX.component.ts。我們?yōu)榱藢㈨撁婧徒M件進(jìn)行區(qū)分,頁面的文件都是XXX.page.ts。我們先在node_module/@Schematics/angula/下面復(fù)制component新建一個(gè)page。

現(xiàn)在,將page下面的files文件夾中的文件名.component都改為.page(由于我們不用單元測(cè)試文件,直接刪除.spec.ts文件即可):

page

  1. files

    1. __name@dasherize@if-flat__

    2. __name@dasherize__.page.__styleext__

    3. __name@dasherize__.page.html

    4. __name@dasherize__.page.ts

  2. index.d.ts

  3. index.js 命令運(yùn)行時(shí)會(huì)執(zhí)行這個(gè)js文件

  4. schema.d.ts

  5. schema.json 定義了這個(gè)生成器命令可以接受的參數(shù)

接下來再看page里面的index.js,這個(gè)js文件在我們跑自己的命令的時(shí)候會(huì)執(zhí)行。看這個(gè)文件,里面的代碼雖然有點(diǎn)看不懂,但是猜猜還是可以的,有些關(guān)鍵地方:

const componentPath = `/${options.path}/`
      + (options.flat ? '' : core_1.strings.dasherize(options.name) + '/')
      + core_1.strings.dasherize(options.name)
      + '.component';
const classifiedName = core_1.strings.classify(`${options.name}Component`);

類似于這樣的地方,我們發(fā)現(xiàn)就是創(chuàng)建對(duì)應(yīng)的組件文件和里面的組件類。所以我們把所有.component和}Component的地方替換為.page和}Page:

const componentPath = `/${options.path}/`
      + (options.flat ? '' : core_1.strings.dasherize(options.name) + '/')
      + core_1.strings.dasherize(options.name)
      + '.page';
const classifiedName = core_1.strings.classify(`${options.name}Page`);

然后接下來再看page/files/__name@dasherize__.page.ts:

import { Component, OnInit<% if(!!viewEncapsulation) { %>, ViewEncapsulation<% }%><% if(changeDetection !== 'Default') { %>, ChangeDetectionStrategy<% }%> } from '@angular/core';
@Component({
 selector: '<%= selector %>',<% if(inlineTemplate) { %>
 template: `
  <p>
   <%= dasherize(name) %> works!
  </p>
 `,<% } else { %>
 templateUrl: './<%= dasherize(name) %>.component.html',<% } if(inlineStyle) { %>
 styles: []<% } else { %>
 styleUrls: ['./<%= dasherize(name) %>.component.<%= styleext %>']<% } %><% if(!!viewEncapsulation) { %>,
 encapsulation: ViewEncapsulation.<%= viewEncapsulation %><% } if (changeDetection !== 'Default') { %>,
 changeDetection: ChangeDetectionStrategy.<%= changeDetection %><% } %>
})
export class <%= classify(name) %>Component implements OnInit {
 constructor() { }
 ngOnInit() {
 }
}

這個(gè)是生成的組件的ts模板,我們需要根據(jù)我們的需求來改造,首先是文件里面的類,既然我們現(xiàn)在的文件名是XXX.page.ts,那么里面的類也就需要時(shí)XXXPage形式的,并且我們的頁面是不允許作為指令的形式出現(xiàn)的,所以也要去掉selector元數(shù)據(jù)。那綜合下來,我們的__name@dasherize__.page.ts應(yīng)該修改為:

import { Component, OnInit<% if(!!viewEncapsulation) { %>, ViewEncapsulation<% }%><% if(changeDetection !== 'Default') { %>, ChangeDetectionStrategy<% }%> } from '@angular/core';
@Component({
 templateUrl: './<%= dasherize(name) %>.page.html',
 <% if(inlineStyle) { %>
 styles: []<% } else { %>
 styleUrls: ['./<%= dasherize(name) %>.page.<%= styleext %>']<% } %><% if(!!viewEncapsulation) { %>,
 encapsulation: ViewEncapsulation.<%= viewEncapsulation %><% } if (changeDetection !== 'Default') { %>,
 changeDetection: ChangeDetectionStrategy.<%= changeDetection %><% } %>
})
export class <%= classify(name) %>Page implements OnInit {
 constructor() { }
 ngOnInit() {
 }
}

OK,目前為止,我們的“原理圖”就創(chuàng)建的差不多了,我們現(xiàn)在需要加入cli指令上去。在@Schematics/angular/collection.json里面定義了cli的命令,同樣,先觀察componet的命令:

"component": {
  "aliases": [ "c" ], // 簡(jiǎn)寫形式
  "factory": "./component", // 采用生成器
  "description": "Create an Angular component.",
  "schema": "./component/schema.json"
},

我們來創(chuàng)建我們自己的命令:

"component": {
  "aliases": [ "pa" ], // 簡(jiǎn)寫形式
  "factory": "./page", // 采用生成器
  "description": "Create an Angular component page.",
  "schema": "./page/schema.json"
},

測(cè)試命令

目前為止,我們已經(jīng)添加好了我們自己的生成命令,現(xiàn)在來嘗試著生成一個(gè)page組件,在app/pages/user下面生成組件user-test,命令:ng g page pages/user/user-test,查看結(jié)果:

CREATE src/app/pages/user/user-test/user-test.page.css (0 bytes)
CREATE src/app/pages/user/user-test/user-test.page.html (28 bytes)
CREATE src/app/pages/user/user-test/user-test.page.ts (239 bytes)
UPDATE src/app/pages/user/user.module.ts (1803 bytes)

看看生成的ts文件:

import { Component, OnInit } from '@angular/core';
@Component({
 templateUrl: './user-test.page.html',
 styleUrls: ['./user-test.page.css']
})
export class UserTestPage implements OnInit {
 constructor() { }
 ngOnInit() {
 }
}

非常好啊,完全滿足我們的需求。

慢著,我現(xiàn)在項(xiàng)目中使用的是less,而且使用component創(chuàng)建的組件里面的樣式文件都是less,為啥我們自定義的生成的是css文件???

很可能是沒有識(shí)別我們自定義的less,那我們自定義的less是怎么定的呢?看看angular.json文件中有個(gè)project里面:

"schematics": {
  "@schematics/angular:component": {
    "styleext": "less"
  }
},

也就是說,我們?cè)谶@里配置了生成component組件時(shí),styleext為less,我們的page命令是沒有配置的,所以會(huì)找默認(rèn)的樣式文件后綴。那我們?cè)谶@里嘗試加上試試看:

"schematics": {
  "@schematics/angular:component": {
    "styleext": "less"
  },
  "@schematics/angular:page": {
    "styleext": "less"
  }
},

再生成一下:

CREATE src/app/pages/user/user-test/user-test.page.less (0 bytes)
CREATE src/app/pages/user/user-test/user-test.page.html (28 bytes)
CREATE src/app/pages/user/user-test/user-test.page.ts (240 bytes)
UPDATE src/app/pages/user/user.module.ts (1804 bytes)

關(guān)于怎么在Angular中使用cli生成自定義文件就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

本文題目:怎么在Angular中使用cli生成自定義文件-創(chuàng)新互聯(lián)
網(wǎng)頁URL:http://jinyejixie.com/article10/ccpjdo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管網(wǎng)站設(shè)計(jì)、微信公眾號(hào)、營銷型網(wǎng)站建設(shè)云服務(wù)器、虛擬主機(jī)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)
遂昌县| 邹平县| 海晏县| 新平| 桑日县| 嵊州市| 连平县| 达日县| 丹阳市| 蒙阴县| 长岛县| 合川市| 尖扎县| 天全县| 广南县| 内黄县| 江西省| 阿拉善左旗| 南乐县| 灌南县| 辽源市| 青海省| 炎陵县| 丹东市| 晴隆县| 蓬莱市| 左权县| 黄冈市| 湘西| 东阳市| 江安县| 孟村| 尤溪县| 济源市| 合阳县| 乌兰察布市| 梁河县| 疏附县| 祁连县| 安康市| 望谟县|