AngularJS - LastFm 應用程序:建立音樂探索應用
前言
你好,有志於成為程序員的各位!今天,我們將踏上一段令人興奮的網頁開發之旅。我們將使用 AngularJS 和 LastFm API 來創建一個音樂探索應用。別擔心如果你之前從未編過程——我會陪伴你走過每一步,就像這些年來我陪伴無數學生一樣。讓我們一起來看看吧!
AngularJS 是什麼?
在我們開始編程之前,讓我們先了解一下 AngularJS 是什麼。想像你正在蓋一棟房子。AngularJS 就像是那棟房子的框架——它為你的網頁應用提供結構和支持。它是一個強大的 JavaScript 框架,能夠讓我們輕鬆地創建動態的單頁應用。
建立我們的專案
步驟 1:創建 HTML 結構
讓我們從創建應用的基本結構開始。打開你喜歡的文本編輯器,創建一個名為 index.html
的新文件。這是我們將要放入其中的內容:
<!DOCTYPE html>
<html ng-app="lastfmApp">
<head>
<title>LastFm 音樂探索</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js"></script>
<script src="app.js"></script>
</head>
<body ng-controller="MainController">
<h1>LastFm 音樂探索</h1>
<input type="text" ng-model="artistName" placeholder="輸入藝術家名稱">
<button ng-click="searchArtist()">搜索</button>
<div ng-if="artist">
<h2>{{artist.name}}</h2>
<p>{{artist.bio.summary}}</p>
</div>
</body>
</html>
讓我們來解析一下:
-
ng-app="lastfmApp"
:這告訴 AngularJS 這是我們應用的根元素。 -
ng-controller="MainController"
:這指定哪個控制器應該處理這部分應用的邏輯。 -
ng-model="artistName"
:這將輸入字段绑定到控制器中的一個名為artistName
的變量。 -
ng-click="searchArtist()"
:這告訴 AngularJS 在按鈕被點擊時調用searchArtist()
函數。 -
ng-if="artist"
:這只有在找到藝術家時才顯示藝術家信息。
步驟 2:創建 AngularJS 應用程序
現在,讓我們來創建我們的 AngularJS 應用程序。創建一個名為 app.js
的新文件,並添加以下代碼:
var app = angular.module('lastfmApp', []);
app.controller('MainController', function($scope, $http) {
$scope.searchArtist = function() {
var apiKey = 'YOUR_LASTFM_API_KEY';
var apiUrl = 'http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&artist=' + $scope.artistName + '&api_key=' + apiKey + '&format=json';
$http.get(apiUrl).then(function(response) {
$scope.artist = response.data.artist;
});
};
});
讓我們來解析一下:
- 我們創建了一個名為
lastfmApp
的 AngularJS 模塊。 - 我們定義了一個名為
MainController
的控制器。 - 在控制器中,我們定義了
searchArtist
函數,它向 LastFm API 發出 HTTP 請求。 - 我們使用
$scope
使變量和函數在 HTML 中可用。 - 我們使用
$http
來發出 API 請求。
理解 AngularJS 概念
現在,我們已經設置好了基本應用程序,讓我們更深入地了解一些 AngularJS 的概念。
模塊
在 AngularJS 中,模塊是應用程序不同部分的容器。它們幫助你將代碼組織起來並保持可維護性。在我們的例子中,我們創建了一個名為 lastfmApp
的模塊:
var app = angular.module('lastfmApp', []);
控制器
控制器是我們定義應用程序行為的地方。它們包含驅動我們應用的邏輯。在我們的例子中,我們創建了一個 MainController
:
app.controller('MainController', function($scope, $http) {
// 控制器邏輯在這裡
});
作用域
作用域是引用模型的對象。它們在控制器和視圖之間起到粘合劑的作用。當我們在控制器中使用 $scope
時,我們是在將數據暴露給 HTML:
$scope.artist = response.data.artist;
指令
指令是 DOM 元素上的標記,告訴 AngularJS 將特定行為附加到那個 DOM 元素上。我們在 HTML 中使用了多個指令:
ng-app
ng-controller
ng-model
ng-click
ng-if
增強我們的應用程序
現在,我們已經理解了基礎知識,讓我們為我們的應用程序添加一些新功能。
顯示相似藝術家
讓我們修改 HTML 來顯示相似藝術家:
<div ng-if="artist">
<h2>{{artist.name}}</h2>
<p>{{artist.bio.summary}}</p>
<h3>相似藝術家</h3>
<ul>
<li ng-repeat="similar in artist.similar.artist">{{similar.name}}</li>
</ul>
</div>
在這裡,我們使用 ng-repeat
指令循環遍歷相似藝術家並將它們顯示在列表中。
添加錯誤處理
讓我們為控制器添加一些錯誤處理:
app.controller('MainController', function($scope, $http) {
$scope.searchArtist = function() {
var apiKey = 'YOUR_LASTFM_API_KEY';
var apiUrl = 'http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&artist=' + $scope.artistName + '&api_key=' + apiKey + '&format=json';
$http.get(apiUrl).then(function(response) {
$scope.artist = response.data.artist;
$scope.error = null;
}, function(error) {
$scope.error = "發生錯誤。請再試一次。";
$scope.artist = null;
});
};
});
並讓我們將這個添加到 HTML 中:
<p ng-if="error" style="color: red;">{{error}}</p>
結論
恭喜你!你剛剛建立了你的第一個 AngularJS 應用程序。我們已經涉足了許多內容,從設置基本結構到添加功能和錯誤處理。記住,學習編程是一段旅程,你建立的每一個應用程序都會教會你一些新知識。
這裡是一個總結我們所學主要 AngularJS 概念的表格:
概念 | 描述 |
---|---|
模塊 | 應用程序不同部分的容器 |
控制器 | 定義應用程序行為 |
作用域 | 控制器和視圖之間的粘合劑 |
指令 | 擴展 HTML 的自定义屬性和元素 |
繼續練習,繼續建造,最重要的是,享受編程的樂趣。在你意識到之前,你將能夠輕鬆地創建複雜的網頁應用程序。快樂編程!
Credits: Image by storyset