將您的應用程序升級到Angular 1.5組件及以後!
>本文由Dan Prince和Michaela Lehr進行了同行評審。感謝SitePoint所有的同行評審員製作SitePoint內容的最佳狀態! >隨著AngularJS的每個新版本,開發團隊都試圖彌合AngularJs 1.x和2之間的差距。隨著AngularJS 1.5的釋放,開發人員將能夠在結構上編寫類似於AngularJS 2.0。
的應用程序。 在本教程中,我們將在AngularJS 1.4中創建一個網格指令。然後,我們將逐步升級到1.5,然後查看如何將其轉換為使用2.0版。鑰匙要點
從AngularJS 1.4開始:首先在AngularJs 1.4中創建一個簡單的網格指令以顯示JSON數組,並利用Bootstrap進行佈局設計。
升級到AngularJS 1.5:通過更換腳本參考並利用新組件指令助手方法,將您的AngularJS 1.4指令轉換為1.5,這簡化了配置並準備將來升級。 AngularJS 1.5中的組件優點:AngularJs 1.5中的組件提供句法糖,而不是指令,提供默認配置和簡化的方法,這對於過渡到AngularJS 2.0。- >過渡到AngularJS 2.0:由於其與1.x版本的架構差異,需要從划痕開始時從頭開始時從頭開始,需要其他庫和新的設置。
- > 使用AngularJs 2.0組件:使用Typescript在AngularJS 2.0中實現組件,可增強代碼的可維護性和可檢驗性,並承認AngularJS 2.0是基於組件的,並且支持高級功能,例如層次依賴性注入和動態載荷。
- 入門
- >讓我們從創建一個稱為AngularMigrateApp的項目目錄。在此文件夾中,創建一個稱為index.html的HTML頁面。 這是頁面的外觀:
- 以及角框架,我們還將利用引導程序設計指令佈局。我們直接從CDN中加入了這兩個文件。
- 創建網格指令
>讓我們創建一個簡單的網格指令以顯示JSON數組。我們將首先創建一個AngularJS模塊。
>我們定義了一個名為“僱員”的常數,該常數包含一個示例數據的數組。然後,我們將此數組注入homectrl,並在控制器的範圍上提供。
<span><span><!DOCTYPE html></span> </span><span><span><span><html</span> lang<span>="en"</span> ng-app<span>="myApp"</span> class<span>="no-js"</span>></span> </span><span><span><span><head</span>></span> </span> <span><span><span><title</span>></span>My AngularJS App<span><span></title</span>></span> </span> <span><span><span><link</span> rel<span>="stylesheet"</span> href<span>="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"</span>></span> </span><span><span><span></head</span>></span> </span><span><span><span><body</span>></span> </span> <span><span><span><script</span> src<span>="https://code.angularjs.org/1.4.10/angular.js"</span>></span><span><span></script</span>></span> </span><span><span><span></body</span>></span> </span><span><span><span></html</span>></span> </span>
我們想通過標籤名稱使用該指令,例如:
>>因此,我們將添加限制選項以指定:
angular<span>.module('myApp', []) </span> <span>.constant('employees', [{ </span> <span>firstName: 'Rima', </span> <span>lastName: 'George', </span> <span>location: 'San Francisco' </span> <span>}, { </span> <span>firstName: 'Shaun', </span> <span>lastName: 'John', </span> <span>location: 'Germany' </span> <span>}, { </span> <span>firstName: 'Rahul', </span> <span>lastName: 'Kurup', </span> <span>location: 'Bangalore' </span> <span>}, { </span> <span>firstName: 'Samson', </span> <span>lastName: 'Davis', </span> <span>location: 'Canada' </span> <span>}, { </span> <span>firstName: 'Shilpa', </span> <span>lastName: 'Agarwal', </span> <span>location: 'Noida' </span> <span>}]) </span> <span>.controller('HomeCtrl', ['$scope', 'employees', function($scope<span>, employees</span>) { </span> $scope<span>.employees = employees; </span> <span>}]) </span>
接下來,我們要將員工數據從視圖傳遞到指令。因此,我們將其添加為綁定:
<span><span><!DOCTYPE html></span> </span><span><span><span><html</span> lang<span>="en"</span> ng-app<span>="myApp"</span> class<span>="no-js"</span>></span> </span><span><span><span><head</span>></span> </span> <span><span><span><title</span>></span>My AngularJS App<span><span></title</span>></span> </span> <span><span><span><link</span> rel<span>="stylesheet"</span> href<span>="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"</span>></span> </span><span><span><span></head</span>></span> </span><span><span><span><body</span>></span> </span> <span><span><span><script</span> src<span>="https://code.angularjs.org/1.4.10/angular.js"</span>></span><span><span></script</span>></span> </span><span><span><span></body</span>></span> </span><span><span><span></html</span>></span> </span>
>現在,我們可以將員工數據作為屬性傳遞給指令:
angular<span>.module('myApp', []) </span> <span>.constant('employees', [{ </span> <span>firstName: 'Rima', </span> <span>lastName: 'George', </span> <span>location: 'San Francisco' </span> <span>}, { </span> <span>firstName: 'Shaun', </span> <span>lastName: 'John', </span> <span>location: 'Germany' </span> <span>}, { </span> <span>firstName: 'Rahul', </span> <span>lastName: 'Kurup', </span> <span>location: 'Bangalore' </span> <span>}, { </span> <span>firstName: 'Samson', </span> <span>lastName: 'Davis', </span> <span>location: 'Canada' </span> <span>}, { </span> <span>firstName: 'Shilpa', </span> <span>lastName: 'Agarwal', </span> <span>location: 'Noida' </span> <span>}]) </span> <span>.controller('HomeCtrl', ['$scope', 'employees', function($scope<span>, employees</span>) { </span> $scope<span>.employees = employees; </span> <span>}]) </span>
>在index.html的主體中添加以下HTML模板腳本。
<span>.directive('myGrid', function() { </span> <span>return { </span> <span>} </span><span>}) </span>
>讓我們在index.html內使用myGrid指令。添加以下代碼:
<span><span><span><my-grid</span>></span><span><span></my-grid</span>></span> </span>
>我們已經指定了HOMECTRL控制器,並在內部使用了我們的指令。將更改保存並瀏覽到index.html頁面。這是行動中數據網格的演示:
>
>請參閱codepen上的sitepoint(@sitepoint)的筆Angularjs 1.4演示。<span>.directive('myGrid', function() { </span> <span>return { </span> <span>restrict: 'E' </span> <span>} </span><span>}) </span>
>升級到1.5
到目前為止,我們已經使用1.4版創建了一個AngularJS指令,並且運行良好。現在,讓我們嘗試使用AngularJS 1.5使用相同的代碼,看看是否有任何事情破裂。>讓我們用1.5版的CDN鏈接替換現有腳本引用。如果您嘗試刷新頁面,則所有內容都應該繼續正常工作。隨著1.x行的新版本,該框架正在更靠近AngularJS 2.0使用組件的工作方式,我們可以在代碼中利用它,從而使最終過渡到版本2.0更容易。 在Angularjs 1.5中,組件是指令的句法糖,可照顧默認值並具有更簡單的配置。他們應該被替換為替代品,尤其是對於那些希望將來升級的人。
與AngularJS合作時,開發人員通常傾向於使用基於控制器的方法,但這會隨著應用程序開始增長而造成許多問題。基於控制器和基於視圖的方法會導致重複的NG-Controller/View,但是基於組件的方法通過創建可以組成較大組件而無需重複代碼的組件來解決問題。>讓我們嘗試使用新的組件指令方法並修改我們現有的代碼。我們將首先創建一個組件:
>與指示方法(採用函數)不同,組件方法採用對象。我們將通過不同模板中的指令中的相同對象。這是HTML模板:
這是修改的組件代碼:
>在上述代碼中可以看到,我們傳遞了我們舊指令中的所有選項。
在index.html頁面中創建一個稱為mycomp的組件。
<span>.directive('myGrid', function() { </span> <span>return { </span> <span>restrict: 'E', </span> <span>scope: { </span> <span>info: '=info' </span> <span>} </span> <span>} </span><span>}) </span>
保存更改並刷新頁面,您應該能夠看到數據未顯示,但瀏覽器控制台中也沒有錯誤。
<span><span><span><my-grid</span> info<span>="employees"</span>></span><span><span></my-grid</span>></span> </span>
如果我們查看官方站點的組件和指令之間的比較圖表,我們可以看到範圍始終是隔離的組件。
這是修改的代碼:
>
<span><span><!DOCTYPE html></span> </span><span><span><span><html</span> lang<span>="en"</span> ng-app<span>="myApp"</span> class<span>="no-js"</span>></span> </span><span><span><span><head</span>></span> </span> <span><span><span><title</span>></span>My AngularJS App<span><span></title</span>></span> </span> <span><span><span><link</span> rel<span>="stylesheet"</span> href<span>="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"</span>></span> </span><span><span><span></head</span>></span> </span><span><span><span><body</span>></span> </span> <span><span><span><script</span> src<span>="https://code.angularjs.org/1.4.10/angular.js"</span>></span><span><span></script</span>></span> </span><span><span><span></body</span>></span> </span><span><span><span></html</span>></span> </span>
>
angular<span>.module('myApp', []) </span> <span>.constant('employees', [{ </span> <span>firstName: 'Rima', </span> <span>lastName: 'George', </span> <span>location: 'San Francisco' </span> <span>}, { </span> <span>firstName: 'Shaun', </span> <span>lastName: 'John', </span> <span>location: 'Germany' </span> <span>}, { </span> <span>firstName: 'Rahul', </span> <span>lastName: 'Kurup', </span> <span>location: 'Bangalore' </span> <span>}, { </span> <span>firstName: 'Samson', </span> <span>lastName: 'Davis', </span> <span>location: 'Canada' </span> <span>}, { </span> <span>firstName: 'Shilpa', </span> <span>lastName: 'Agarwal', </span> <span>location: 'Noida' </span> <span>}]) </span> <span>.controller('HomeCtrl', ['$scope', 'employees', function($scope<span>, employees</span>) { </span> $scope<span>.employees = employees; </span> <span>}]) </span>
>請參閱codepen上的sitepoint(@sitepoint)的筆Angularjs 1.5演示。
>升級到2.0
注意:AngularJS 2.0仍在beta中。我們使用的版本是Angular2.0.0-Beta.8。
>讓我們用CDN中的2.0版鏈接替換我們的應用中的AngularJS的現有版本,看看是否有任何破壞:
<span>.directive('myGrid', function() { </span> <span>return { </span> <span>} </span><span>}) </span>
>
如您所見,我們的組件代碼與Angular 2.0!
>可以通過包含單個腳本標籤的框架來開始使用Angular 1.X,但Angular 2.0的情況已更改。我們需要其他幾個庫才能運行。儘管可以通過腳本標籤分別加載它們,但可以將它們捆綁在一起,以作為生產構建過程的一部分。
>>如果我們查看官方快速啟動指南,我們可以看到我們需要其他一些庫和開發依賴性才能開始使用2.0。
>讓我們創建一個稱為angularjs2.0component的文件夾,然後創建一個package.json文件,如下所示
上面的文件顯示了AngularJS 2.0應用程序所需的所有依賴項。保存更改並使用npm安裝所需的依賴項:
>創建一個名為app的子文件夾,並在內部創建一個名為app.component.js的文件,並具有以下代碼:
<span><span><span><my-grid</span>></span><span><span></my-grid</span>></span> </span>
在上面的代碼中,我們正在使用Angular Core命名空間NG.CORE創建一個組件。我們已經將組件的選擇器定義為my-comp。我們使用相同的html,grid.html作為我們應用的模板。我們已經在組件的構造函數中定義了我們的員工對象。
<span>.directive('myGrid', function() { </span> <span>return { </span> <span>restrict: 'E' </span> <span>} </span><span>}) </span>
<span><span><!DOCTYPE html></span> </span><span><span><span><html</span> lang<span>="en"</span> ng-app<span>="myApp"</span> class<span>="no-js"</span>></span> </span><span><span><span><head</span>></span> </span> <span><span><span><title</span>></span>My AngularJS App<span><span></title</span>></span> </span> <span><span><span><link</span> rel<span>="stylesheet"</span> href<span>="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"</span>></span> </span><span><span><span></head</span>></span> </span><span><span><span><body</span>></span> </span> <span><span><span><script</span> src<span>="https://code.angularjs.org/1.4.10/angular.js"</span>></span><span><span></script</span>></span> </span><span><span><span></body</span>></span> </span><span><span><span></html</span>></span> </span>
這告訴Angular加載我們剛剛創建的組件。
下一步,創建一個名為index.html的文件在應用程序文件夾之外,然後粘貼以下代碼:
,但數據仍未顯示!
>將其包裹起來 >組件是AngularJS 2.0的主要組成部分,可以說它基於組件的框架是正確的。在1.x行的每個新版本中,我們都在更靠近使用2.0版的應用程序開發應用程序。 >更深入地研究遷移您的AngularJS應用程序,請考慮閱讀官方遷移指南。 Angular 2代碼也可以用打字稿和DART編寫,如果您有興趣,我建議您分別閱讀AngularJS 2的官方指南,分別是Typescript或Dart。
>從AngularJS升級到Angular時,我可能面臨什麼挑戰? 我如何測試我的角度應用程序? Angular提供了一個稱為測試台的測試框架,哪個允許您為組件創建動態測試環境。您還可以使用茉莉(Jasmine)(行為驅動的開發框架來測試JavaScript代碼,以及測試跑步者Karma。 Angular還支持使用量角器的端到端測試。 有許多可用於學習角度的資源,包括官方的角度文檔,在線教程,在線教程,書籍和課程。 Angular社區也非常活躍和支持,有許多論壇,博客和stackoverflow問題可供參考。angular<span>.module('myApp', [])
</span> <span>.constant('employees', [{
</span> <span>firstName: 'Rima',
</span> <span>lastName: 'George',
</span> <span>location: 'San Francisco'
</span> <span>}, {
</span> <span>firstName: 'Shaun',
</span> <span>lastName: 'John',
</span> <span>location: 'Germany'
</span> <span>}, {
</span> <span>firstName: 'Rahul',
</span> <span>lastName: 'Kurup',
</span> <span>location: 'Bangalore'
</span> <span>}, {
</span> <span>firstName: 'Samson',
</span> <span>lastName: 'Davis',
</span> <span>location: 'Canada'
</span> <span>}, {
</span> <span>firstName: 'Shilpa',
</span> <span>lastName: 'Agarwal',
</span> <span>location: 'Noida'
</span> <span>}])
</span>
<span>.controller('HomeCtrl', ['$scope', 'employees', function($scope<span>, employees</span>) {
</span> $scope<span>.employees = employees;
</span> <span>}])
</span>
<span>.directive('myGrid', function() {
</span> <span>return {
</span> <span>}
</span><span>})
</span>
經常詢問有關升級到角度組件的問題(常見問題解答)
>
> typescript在Angular中的作用是什麼?編譯到普通的JavaScript。在Angular中,Typescript提供了靜態鍵入,接口和類,這使代碼更可維護和可測試。 TypeScript還提供了使用自動完成,類型檢查和源地圖支持的更好的工具,從而改善了開發體驗。 >角度支持移動設備如何通過提供響應迅速的佈局和触摸支持來支持移動設備。它還為移動設備(例如懶惰加載和異步模板編譯)提供了性能優化。 Angular還支持漸進式Web應用程序(PWA),可以安裝在移動設備上並離線工作。
> >有哪些資源可用於學習角度?
以上是將您的應用程序升級到Angular 1.5組件及以後!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務
