想象一下您可以使用Restful API执行CRUD的资源Post
:
// in routes/api.php ...
GET /api/v1/posts API\V1\PostController@index
POST /api/v1/posts API\V1\PostController@store
GET /api/v1/posts/{post} API\V1\PostController@show
PATCH /api/v1/posts/{post} API\V1\PostController@update
// etc.
如您所见,每个端点都由Controllers\API\PostController
中的控制器操作处理,例如index
,store
,show
,update
等根据Laravel惯例。现在,还有一个前端专用控制器Controllers\PostController
,其唯一的责任是响应一条路线/posts
(在routes/web.php
中)并呈现视图:
public function index()
{
return view('posts.index');
}
反过来,这个index.blade.php
有许多Vue组件,一个可以使用Axios从API中获取并列出所有Post
,一个POST并创建一个新的Post
对象,以及其他人要更新,删除等等。现在,问题是,如何组织和命名这些组件?这是我的镜头:
assets/js/components
下,我创建了一个posts
文件夹,并添加了index.js
,show.js
,create.js
,update.js
等,模仿Blade会在传统的Laravel应用程序中创建其他视图; 每个文件都遵循标准......
module.exports = {
data() {
return { /* data here */ };
},
created() {
/* processing here */
}
}
...并在assets/js/app.js
模式后注册<resource_name-action>
:
Vue.component('post-index', require('./components/posts/index.js'));
最后,组件在index.blade.php
中用作内联模板:
<post-index inline-template>
<!-- HTML markup here -->
</post-index>