javascript - 如何使用 Laravel 作为 Angular SPA 应用程序的后端?
问题描述
我想用 Angular(前端)和 Laravel(后端)创建一个网站。连接这两者的最佳方式是什么?他们如何沟通?我在搜索时发现的是超过 2 年的解决方案,所以我想知道现在是否有首选的方法来做到这一点。
我现在做什么: 我在 laravel 中创建了模型、控制器和迁移文件,在LanguagesController中我调用“::all”方法从 XAMPP 获取所有数据:
public function index()
{
return response()->json(Languages::all(), 200, ['Content-Type' => 'application/json;charset=UTF-8', 'Charset' => 'utf-8'],
JSON_UNESCAPED_UNICODE);
}
之后,我在api.php中为它创建路由:
Route::get('/languages', "LanguagesController@index");
所以现在,我可以调用 www.laravelfirsttry.com/api/languages 从 Languages 表中获取所有数据。
在 Angular 中,我做了以下事情: 创建一个向 Laravel 发送请求的语言服务:
private baseUrl = 'http://www.laravelfirsttry.com/api/languages';
constructor(private http: HttpClient) { }
getLanguages() {
return this.http.get(this.baseUrl);
}
然后在我的组件中我调用这个服务,并给出它的函数对我的变量的响应,然后我只处理视图:
constructor(private languageService: LanguageService) {
this.getLanguages();
}
getLanguages(): void{
this.languageService.getLanguages()
.subscribe((res: any) => {
this.language_tabs = res;
console.log(res);
}, error => {
console.error(error);
});
}
但问题是当我尝试它时,api调用需要相对较长的时间才能完成。我加载了我的网站,所有内容都已加载,但在调用完成之前主要组件不可见。我认为这看起来不太好,而且我认为我做错了什么。
摘要:我在laravel中创建了一个API,然后我在Angular中调用了这个 API ,而且速度很慢。使用 Laravel 后端制作 Angular 应用程序的最佳方法是什么?
解决方案
首先,您需要 HttpClientModule 到您的 AppModule 的导入数组,就像这样。
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { HttpClientModule } from '@angular/common/http';
import { AppComponent } from './app.component';
@NgModule({
imports: [
BrowserModule,
HttpClientModule
],
declarations: [
AppComponent
],
bootstrap: [AppComponent]
})
export class AppModule { }
然后在你的组件中导入 httpClient 并将其添加到构造函数中
import { HttpClient } from '@angular/common/http';
然后你可以用这样的代码调用 API。
this.http.get<any>('http://www.laravelfirsttry.com/api/languages').subscribe(data => {
console.log(data);
// do any operations with your data.
})
作为先决条件,请确保您的后端 Laravel API 工作正常。
推荐阅读
- javascript - JavaScript中的浮点数精度
- ajax - 页面加载时的无缝视频背景
- matlab - 使用 fmincon 内点算法的最优容差
- c++ - 模板类上的 C++ 继承运算符“<<”
- angular - Angular 库 - 我可以导入组件代码吗?
- spotfire - Spotfire Web 报告作为幻灯片放映?
- javascript - Shuffle.js 复合过滤器和数据组数组
- javascript - 如何自定义 sendKeys(protractor.Key.)
- python - 如何将任务添加到 django 视图内的异步循环?
- kotlin - Kotlin 中的 filter() 和 {} 有什么区别