首页 > 其他分享 >Laravel + Vue 3(Vite、TypeScript)SPA 设置

Laravel + Vue 3(Vite、TypeScript)SPA 设置

时间:2023-01-28 11:31:54浏览次数:43  
标签:Laravel TypeScript FrontEndApp yarn js Vue build 我们

在本教程中,我将向大家展示如何使用 Laravel + Vue 3 使用 typescript 和 Vite 设置你自己的单页应用程序。

这是在 Laravel 项目中添加 PWA 的手动方法。我们不会使用 InertiaJS 或其他类似的东西,我们也不会混合使用。我们将手动实现我们自己的 VueJS 前端。

第 1 步:让我们创建我们的 Laravel 项目

composer create-project laravel/laravel laravel-vue-manual

第 2 步:设置前端

在我们的 laravel 项目中,让我们使用 yarn 运行一个命令,并选择 vue 和 typescript。

yarn create vite

将项目名称设置为:FrontEndApp
选择:Vue
选择:TypeScript

然后转到我们的FrontEndApp目录并运行yarn或yarn install安装依赖项。

配置 Vite

让我们配置我们的 vite 配置​​FrontEndApp\vite.config.ts​

import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";

export default ({ mode }) => {
// 检查是否开发
const isDevelopment = mode === "development";

return defineConfig({
server: {
port: 3000,
},
build: {
// 生成的文件将添加到此处
outDir: "./../public/app",
},
// 也将更改基于模式的基础
base: isDevelopment ? "/" : "/app/",
plugins: [vue()],
});
};

然后让我们更改build脚本FrontEndApp\package.json,这样每次我们构建它时都会替换以下文件public/app:

{
...
"scripts": {
"dev": "vite",
"build": "vue-tsc --noEmit && vite build --emptyOutDir",
"preview": "vite preview"
},
...
}

现在,如果我们在FrontEndApp中运行​​yarn build​​​,它应该在laravel项目的根目录中的​​public​​文件夹中创建一个名为 app 的文件夹。

Laravel + Vue 3(Vite、TypeScript)SPA 设置_laravel

第 3 步:设置 Laravel 路由

让我们设置我们的 laravel 路由,以便我们可以访问我们刚刚创建的文件。

让我们编辑这个文件 ​​routes\web.php​

<?php

use Illuminate\Support\Facades\Route;

Route::get('/', function () {
return view('welcome');
});

Route::get('/app/{any}', function () {
$path = public_path('app/index.html');
abort_unless(file_exists($path), 400, 'Page is not Found!');
return file_get_contents($path);
})
->name('FrontEndApp');

现在,如果我们​​http://127.0.0.1:8000/app​​在浏览器中打开,我们现在可以看到我们的应用程序已启动。

第 4 步:设置脚本

我们将在我们的根项目目录中添加一个开发包,并同时调用它。我们用它来一次运行 2 个或更多命令。

安装:

yarn add -D concurrently

如果我们想要自动工作,不想每次使用时都重新构建frontednapp,我们要做的是在package.json项目的根目录中添加一个新脚本。

{   
...
"scripts": {
...
"front:serve": "cd FrontEndApp && yarn dev",
"front:build": "cd FrontEndApp && yarn build",
"serve": "concurrently \"php artisan serve --port=8080\" \"yarn front:serve\"",
"deploy": "yarn setup && yarn front:build && php artisan migrate"
},
...
}

这样, running ​​yarn serve​​​将同时运行 ​​127.0.0.1:8080​​​ 和 ​​localhost:3000​​。你现在可以同时使用这两个项目。

完成 FrontEndApp 的工作后,你可以运行 ​​yarn deploy​​ 以构建我们的前端。

结论

我相信这也是大家可以在 laravel 项目中添加 pwa 的一种方式,这样你就可以将它们保存在一个项目中。

考虑到这一点,你可以添加routes到你的 FrontEndApp 项目中,还可以添加状态管理器PiniaJA,例如 等等。

⭐️ 好书推荐

《Vue.js 快速入门实战》

Laravel + Vue 3(Vite、TypeScript)SPA 设置_typescript_02

【内容简介】

Vue.js 快速入门实战以Vue.js的知识点为基础,结合TypeScript的使用,循序渐进地介绍了Vue.js 3.0(简称Vue3)的知识点和实战技巧,可以帮助零基础的读者掌握独立开发项目和部署项目上线的技术。全书共14章,包括Vue.js概述、搭建开发环境、Vue.js组合式API、Vue.js的模板语法、Vue.js的计算属性和侦听器、Vue.js中class和style的绑定、Vue.js的表单开发、Vue.js的组件开发、Vue.js的网络请求、Vue.js的状态管理、Vue.js的路由管理、Vue的项目部署、在线招聘网站开发实战以及招聘网站后台管理系统开发实战。



标签:Laravel,TypeScript,FrontEndApp,yarn,js,Vue,build,我们
From: https://blog.51cto.com/haiyongblog/6024885

相关文章

  • vue配置反向代理解决跨域__Vue.js
    正向代理与反向代理正向代理:在客户端和原始服务器(originserver)之间架设一个代理服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后......
  • vue3 中element-plusDropdown 背景色改变
    vue3中element-plusDropdown组件样式改变最近打算学习一下vue3,引入组件库的时候了解到vue3推荐使用element-plus,本以为和elememt-ui用起来差不多的,但是还是天真了(深深......
  • vue项目埋点实践,使用img发送埋点数据
    埋点数据种类:1.按钮点击2.页面切换(具体数据内容根据实际需求再定义)埋点数据交互:采用img的默认下载功能,发送get请求,带上埋点数据(此处后期需要加上加密)发送频率:1.固定时间2.......
  • Vue Router 的导航守卫内部使用pinia | 报错getActivePinia was called with no activ
    运行环境"pinia":"^2.0.28","vue":"^3.2.45","vue-router":"^4.1.6"触发错误代码import{createWebHistory,createRouter}from'vue-router'importuseMenuS......
  • Vue三大路由守卫
    Vue路由守卫路由守卫,简单理解来说就是,当用户要进行一些操作时,需要用户的一些信息或数据或行为,判断过后,才会同意用户进行操作。说到这里,大家心里都或多或少有点理解了吧,官......
  • vue3的unplugin-auto-import自动引入
    vue3的unplugin-auto-import,setup语法糖下自动引入vue的基本apihttps://blog.csdn.net/weixin_52020362/article/details/127841641......
  • vue路由缓存的三种方式
    1.全部缓存使用Keep-alive标签包裹router-view就可以实现全部缓存<keep-alive><router-view></router-view></keep-alive>2.缓存单个指定的路由同样使用Keep-ali......
  • vue图片读取
    <el-form-itemlabel="头像"prop="pass"><imgv-bind:src="imgSrc"style="width:100px;"><inputtype="file"ref="myfile"id="fileId......
  • Vue3.2 新增 v-memo
    这个指令是​​Vue3.2​​新增的内置指令,大致的作用就是小幅度手动提升一部分​​性能​​官网文档​​cn.vuejs.org/api/built-i…​​用法在组件和元素都可以使用,主要是......
  • [Typescript] Handling conditional return type of a function
    import{expect,it}from"vitest";import{Equal,Expect}from"../helpers/type-utils";functionyouSayGoodbyeISayHello(greeting:unknown){returngree......