ให้ฉันนำหน้าด้วยการพูดว่าฉันถือว่าคุณและทุกคนที่จะอ่านสิ่งนี้มีความสะดวกสบายกับ Angular 1 ( ตอนนี้เรียกว่าAngularJSซึ่งตรงกันข้ามกับAngularสำหรับรุ่นที่ใหม่กว่า) ที่ถูกกล่าวว่าลองมาเพิ่มเติมและความแตกต่างที่สำคัญใน Angular 2+
cli
พวกเขาเพิ่มเชิงมุม
ng new [app name]
คุณสามารถเริ่มต้นโครงการใหม่โดยการทำงาน คุณสามารถให้บริการโครงการของคุณโดยเรียกใช้ng serve
เรียนรู้เพิ่มเติมที่นี่: https://github.com/angular/angular-cli
- รหัสเชิงมุมของคุณเขียนใน ES6 Typescript และคอมไพล์ในรันไทม์ถึง Javascript ในเบราว์เซอร์
เพื่อให้เข้าใจอย่างถ่องแท้ในเรื่องนี้ฉันแนะนำให้ตรวจสอบรายการทรัพยากรที่ฉันมีที่ด้านล่างของคำตอบ
- โครงสร้างโครงการ
ในโครงสร้างพื้นฐานคุณจะมีapp/ts
โฟลเดอร์ที่คุณจะทำงานส่วนใหญ่และ a app/js
คุณจะพบในapp/js
ไฟล์โฟลเดอร์ที่มี.js.map
นามสกุล พวกเขา "แมป" ไฟล์ ".ts" ของคุณไปยังเบราว์เซอร์ของคุณเพื่อทำการดีบั๊กเนื่องจากเบราว์เซอร์ของคุณไม่สามารถอ่าน typescript ดั้งเดิม
อัปเดต : เป็นรุ่นเบต้า โครงสร้างโครงการเปลี่ยนไปเล็กน้อยในกรณีส่วนใหญ่และหากคุณใช้แองกูลาร์ไคลแอนคุณจะทำงานใน
src/app/
โฟลเดอร์ ในโครงการเริ่มต้นคุณจะมีดังต่อไปนี้
app.component.css
app.component.html
app.component.spec.ts
app.component.ts
app.module.ts
index.ts
app.component.css : ไฟล์ CSS ที่คุณควรใช้เฉพาะกับcomponent.html
app.component.html : มุมมอง (ตัวแปรที่ประกาศใน app.component.js)
app.component.spec.ts : ใช้สำหรับการทดสอบapp.component.ts
app.component.ts : รหัสของคุณที่ผูกกับapp.component.html
app.module.ts : นี่คือสิ่งที่จะช่วยปิดแอพของคุณและที่ซึ่งคุณจะกำหนดปลั๊กอินส่วนประกอบบริการและอื่น ๆ ทั้งหมดนี่คือสิ่งที่เทียบเท่ากับapp.js
ในแองกูลาร์ 1
index.tsใช้เพื่อกำหนดหรือส่งออกไฟล์โครงการ
ข้อมูลเพิ่มเติม:
เคล็ดลับสำหรับมืออาชีพ: คุณสามารถเรียกใช้ng generate [option] [name]
เพื่อสร้างบริการใหม่ส่วนประกอบท่อ ฯลฯ
นอกจากนี้ยังมีtsconfig.json
ไฟล์เป็นสิ่งสำคัญที่จะกำหนดกฎรวบรวม TS สำหรับโครงการของคุณ
หากคุณคิดว่าฉันต้องเรียนรู้ภาษาใหม่ทั้งหมด? ... เอ่อ ... TypeScript เป็นส่วนเสริมของ JavaScript อย่าถูกข่มขู่ มีไว้เพื่อให้การพัฒนาของคุณง่ายขึ้น ฉันรู้สึกว่าฉันมีความเข้าใจที่ดีกับมันหลังจากเพียงไม่กี่ชั่วโมงเล่นกับมันและมีมันลงหลังจาก 3 วัน
- คุณผูก HTML ของคุณคล้ายกับวิธีที่คุณทำหากในคำสั่ง Angular 1 ดังนั้นตัวแปรที่ชอบ
$scope
และ$rootScope
เลิกใช้แล้ว
สิ่งนี้คุณอาจถูกบอกเป็นนัย Angular 2 ยังคงเป็นMV *แต่คุณจะใช้ ' components ' เป็นวิธีในการผูกโค้ดกับเทมเพลตของคุณเช่นทำสิ่งต่อไปนี้
import { Component } from '@angular/core';
@Component({
selector:'my-app',
template: '<h1> Hello World! </h1>'
})
export class AppComponent {}
ที่นี่คิดว่าimport
คำสั่งเป็นการฉีดพึ่งพาของคุณในตัวควบคุม v1 คุณสามารถใช้import
เพื่อนำเข้าแพคเกจของคุณที่import {Component}
บอกว่าคุณจะทำให้คุณต้องการที่จะผูกกับคุณcomponent
HTML
สังเกต@Component
มัณฑนากรคุณมีและselector
template
ต่อไปนี้selector
เป็นวิธีการ$scope
ที่คุณใช้เช่นเดียวกับคุณใช้ v1 directives
โดยที่ชื่อของselector
มันคือสิ่งที่คุณใช้ผูก HTML ของคุณ
<my-app> </my-app>
ในกรณีที่<my-app>
เป็นชื่อของแท็กของคุณเองที่คุณจะใช้ที่จะทำหน้าที่เป็นตัวยึดสำหรับสิ่งที่ประกาศในแม่แบบของคุณ <h1> Hello World! </h1>
IE) โดยที่นี่จะมีลักษณะดังต่อไปนี้ใน v1:
HTML
<h1>{{hello}}</h1>
JS
$scope.hello = "Hello World!"
นอกจากนี้คุณสามารถเพิ่มบางสิ่งระหว่างแท็กเหล่านี้เพื่อสร้างข้อความโหลดเช่นนี้:
<my-app> Loading... </my-app>
จากนั้นจะแสดง " กำลังโหลด ... " เป็นข้อความโหลด
โปรดทราบว่าสิ่งที่ประกาศในtemplate
คือเส้นทางหรือ HTML ดิบที่คุณจะใช้ในแท็กHTML
ของคุณselector
การติดตั้งแบบเต็มของ Angular 1 จะมีลักษณะเช่นนี้:
HTML
<h1 ng-controller="myCtrl">{{hello}}</h1>
ใน v1 นี่จะดูเหมือนอะไร
JS
angular.module('controller', [])
.controller('myCtrl', function( $scope) {
$scope.hello = "Hello World!"
})
นี่คือสิ่งที่ฉันชอบเกี่ยวกับ v2 ฉันพบว่าแนวทางเป็นเส้นโค้งการเรียนรู้ที่สูงชันสำหรับฉันใน v1 และแม้กระทั่งเมื่อฉันรู้ว่าพวกเขาพบว่าฉันมักจะมีการCSS
แสดงผลไม่ได้ว่าฉันตั้งใจ ฉันพบว่าวิธีนี้ง่ายกว่า
V2 ช่วยให้การปรับขนาดแอพของคุณง่ายขึ้นเนื่องจากคุณสามารถแยกแอพของคุณได้ง่ายกว่าที่คุณทำใน v1 ฉันชอบวิธีการนี้เนื่องจากคุณสามารถมีส่วนการทำงานทั้งหมดของคุณในไฟล์เดียวซึ่งต่างกับการมีหลายส่วนในเชิงมุม v1
สิ่งที่เกี่ยวกับการแปลงโครงการของคุณจาก v1 เป็น v2
จากสิ่งที่ผมเคยได้ยินจากทีมพัฒนาหากคุณต้องการที่จะปรับปรุงโครงการ v1 v2 ของคุณเพื่อคุณจะเพียงแค่จะผ่านและการลบ blobs เลิกและแทนที่คุณ$scope
s กับselector
s ฉันพบว่าวิดีโอนี้มีประโยชน์ มันอยู่กับทีม Ionic บางตัวที่ทำงานเคียงข้างกับทีมเชิงมุมเนื่องจาก v2 ให้ความสำคัญกับมือถือมากขึ้นhttps://youtu.be/OZg4M_nWuIkหวังว่าสิ่งนี้จะช่วยได้
อัปเดต:ฉันอัปเดตโดยการเพิ่มตัวอย่างเนื่องจากการใช้งานอย่างเป็นทางการของ Angular 2 ได้ปรากฏ
UPDATE 2:นี่ยังเป็นคำถามยอดนิยมดังนั้นฉันคิดว่าฉันมีทรัพยากรบางอย่างที่ฉันพบว่ามีประโยชน์มากเมื่อฉันเริ่มทำงานกับ angular 2
ทรัพยากรที่มีประโยชน์:
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ ES6 ฉันขอแนะนำให้ตรวจสอบบทเรียนใหม่เกี่ยวกับECMAScript 6 / ES6ของ New Boston - YouTube Playlist
เพื่อเขียนฟังก์ชั่น typescript และดูว่าพวกเขารวบรวมไปยังจาวาสคริปต์ได้อย่างไรตรวจสอบภาษาสนามเด็กเล่น typescript
เมื่อต้องการดูฟังก์ชันโดยฟังก์ชันแยกย่อยของสิ่งที่ค่า Angular 1 สมมูลใน Angular 2 ให้ดูAngular.io - Cookbook -A1 A2 การอ้างอิงด่วน