laravel vue tailwind

news2024/11/27 18:34:17

下载laravel最新7.x

composer create-project --prefer-dist laravel/laravle blog 7.x-dev

 cd blog

valet link blog

valet links 

blog.test

测试通过后,开始安装tailwind

npm i

npm i tailwindcss autoprefixer postcss@7

都是最新版应该也没有什么问题

在根目录下添加

tailwind.js

module.exports = {
    content: [
        "./resources/**/*.blade.php",
        "./resources/**/*.js",
        "./resources/**/*.vue",
    ],
    darkMode: "class",
    theme: {
        extend: {},
    },
    plugins: [],
};

在webpack.mix.js 改为

mix.js("resources/js/app.js", "public/js")
    .sass("resources/sass/app.scss", "public/css")
    .options({
        processCssUrls: false,
        postCss: [tailwindcss("./tailwind.js")],
    });

在res / sass /app.scss 中添加,vscode 的报错不用管,只要打包成就没什么问题,如果你是强迫症直接网上查找 或者  用phpstorm 

@tailwind base;
@tailwind components;
@tailwind utilities;

在welcome.blade.php中添加,测试代码<span class="bg-red-900">dfdf</span>

<link rel="stylesheet" href="{{ asset('css/app.css') }}">
        @stack('stylesheets')

在终端输入命令

npm run prod

这个时候刷新页面,是有出现文字背景是红色的,加载成功,

这个时候你会发现浏览器的css都是报红,不要慌,

在package.json 中添加

"browserslist": [
        "> 1%",
        "last 2 versions"
    ]

再运行 npm run prod

问题解决,接着在测试添加vue后会出现的问题

添加vue 

 composer require laravel/ui:^2.4

php artisan ui vue

npm install  初始化

打包要重新写

const mix = require("laravel-mix");

const fs = require("fs");
const Path = require("path");
const { argv } = require("process");

const tailwindcss = require("tailwindcss");

/*
 |--------------------------------------------------------------------------
 | Mix Asset Management
 |--------------------------------------------------------------------------
 |
 | Mix provides a clean, fluent API for defining some Webpack build steps
 | for your Laravel application. By default, we are compiling the Sass
 | file for the application as well as bundling up all the JS files.
 |
 */

// 模块参数名称
const MODULE_ARG_NAME = "pages";

const FILE_TYPE = {
    SASS: "sass",
    JS: "js",
};

const SASS_PATH_PREFIX = "resources/sass/views";
const JS_PATH_PREFIX = "resources/js/views";

const CSS_DEST_PATH = "public/css";
const JS_DEST_PATH = "public/js";

function resolve(dir) {
    return Path.resolve(process.cwd(), dir);
}

const getCompilerModules = () => {
    let modules = [];
    const lastArg = argv[argv.length - 1];

    if (lastArg.indexOf(MODULE_ARG_NAME) > -1) {
        const modulesStr = lastArg.split("=")[1];
        modules = modulesStr.split(",");
    }
    return modules;
};

const complierFile = (
    fileType = FILE_TYPE.SASS,
    pathPerfix = SASS_PATH_PREFIX,
    destPath = CSS_DEST_PATH
) => {
    if (!mix[fileType] || !mix[fileType] instanceof Function) {
        throw new Error("文件类型非法!");
    }

    const _fn = mix[fileType];

    const _findNeedComfilerFile = (dirPath, subDirPath) => {
        const files = fs.readdirSync(dirPath);
        files.forEach((item) => {
            const fPath = Path.join(dirPath, item);
            const stat = fs.statSync(fPath);
            if (stat.isDirectory()) {
                _findNeedComfilerFile(fPath, item);
            }
            if (stat.isFile()) {
                let _targetDestPath = destPath;
                if (subDirPath) {
                    _targetDestPath = `${_targetDestPath}/${subDirPath}`;
                }
                _fn(fPath, _targetDestPath);
            }
        });
    };

    try {
        _findNeedComfilerFile(pathPerfix);
    } catch (e) {
        // throw new Error(e);
        console.error(e);
    }
};

const gloableCompier = () => {
    // 编译SASS
    complierFile(FILE_TYPE.CSS, SASS_PATH_PREFIX, `${CSS_DEST_PATH}/views`);

    // 编译JS
    complierFile(FILE_TYPE.JS, JS_PATH_PREFIX, `${JS_DEST_PATH}/views`);
};

const init = () => {
    mix.webpackConfig({
        resolve: {
            alias: {
                "@": resolve("resources"),
                "@views": resolve("resources/views"),
                "@js": resolve("resources/js"),
                "@sass": resolve("resources/sass"),
                $public: resolve("public"),
            },
        },
    });
    // mix.js("resources/js/app.js", "public/js").sass(
    //     "resources/sass/app.scss",
    //     "public/css"
    // );

    mix.js("resources/js/app.js", "public/js")
        .sass("resources/sass/app.scss", "public/css")
        .options({
            processCssUrls: false,
            postCss: [tailwindcss("./tailwind.js")],
        });

    const compilerModules = getCompilerModules();
    console.log(compilerModules);
    if (compilerModules.length) {
        // 按需编译
        for (const module of compilerModules) {
            const sassPath = `${SASS_PATH_PREFIX}/${module}`;
            const jsPath = `${JS_PATH_PREFIX}/${module}`;
            // 编译SASS
            complierFile(
                FILE_TYPE.CSS,
                sassPath,
                `${CSS_DEST_PATH}/views/${module}`
            );

            // 编译JS
            complierFile(
                FILE_TYPE.JS,
                jsPath,
                `${JS_DEST_PATH}/views/${module}`
            );
        }
    } else {
        // 全局编译
        gloableCompier();
    }

    if (mix.inProduction()) {
        mix.version();
    }

    mix.sourceMaps(false, "eval-source-map");
};

init();

完成后显示没有问题,但是

浏览器css 全部都报红,

解决方案:

1.直接将public /css / app.css 中修改 -webkit-text-size-adjust: none;  

2.在res / sass / app.scss 中修导入 

// @tailwind base;
// @tailwind components;
@tailwind utilities;

// 如果你不需要它的初始,可以只有它的实例,那么,就没有  红色波浪线,

关于laravel 的模版语言,直接套用就好

layouts / app.blade.php

<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>
            @yield('page-title')
        </title>

        <link rel="stylesheet" href="{{ asset('css/app.css') }}">
        @stack('stylesheets')
        
    

    </head>
    <body>
    @yield('content')
    <script src="{{ asset('js/app.js')}}"></script>
    @stack('scripts')
    </body>
</html>

接下来就直接继承就好 了

@extends('layouts.app')

@section('page-title', 'home index')

@section('content')
    <div id='home-wrapper'>
        <span>wo</span>
        <span>@{{test}}</span>
        <span class=' text-blue-900'>this is good</span>
        <span class=' bg-red-600'>thi is bt</span>
        <span class=' text-blue-900'>this is xiaoming</span>
    </div>
@endsection

@push('scripts')
    <script src="{{ asset('js/views/home/index.js') }}"></script>
@endpush

@push('stylesheets')
    <link rel="stylesheet" href="{{ asset('css/views/home/index.css') }}"> 
@endpush

 接下来就愉快的撸代码吧,如果出现其他问题可留言讨论

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/51567.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UE的Blend Profile

参考&#xff1a;Animation Blend Profile in Unity 参考&#xff1a;Unreal Engine - How to make a Blend Profile 参考&#xff1a;blend-masks-and-blend-profiles-in-unreal-engine 什么是Blend Profile Animation Blend Profile is a UE4 animation system feature that …

aws eks 使用keycloak集成eks oidc访问apiserver

资料 OpenID Connect Tokens Kubernetes 与 OpenID 集成 SSO 登录测试 Introducing OIDC identity provider authentication for Amazon EKS Understanding Amazon Cognito user pool OAuth 2.0 grants 在 Kubernetes 中使用 Keycloak OIDC Provider 对用户进行身份验证 深…

Koa2基础笔记

目录 一、快速入门 二、中间件 链式调用 洋葱圈模型 异步处理 三、路由 koa-router 四、请求参数解析 处理URL参数 处理body参数 五、错误处理 原生的错误处理 使用中间件 一、快速入门 新建文件夹使用VSCode打开&#xff0c;终端运行npm init -y生成package.json…

[附源码]计算机毕业设计springboot水果管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

冬季寒冷,普通空调如何做到智能控制,增温又降耗的?

寒冷的冬日总少不得取暖的工具&#xff0c;空调成为人们的优先选择。但是&#xff0c;在办公大楼、商场等需要长时间空调供暖&#xff0c;空调又多的地方&#xff0c;空调控制让不少人感觉到了困扰。上下班时间空调多&#xff0c;检查慢&#xff0c;如果漏掉其中一个&#xff0…

C++——类和对象讲解

C——类和对象讲解总览 本篇文章的讲解将按照上述的方式&#xff0c;逐层递进&#xff0c;进一步帮你拿捏C类和对象这部分。 类和对象上&#xff08;基础篇&#xff09; 1、初识面向对象编程&#xff1a; 初步了解面向过程和面向对象的区别 举个比较感人的例子用来帮助铁子…

Qt视频监控系统一个诡异问题的解决思路(做梦都想不到)

一、前言 由于Qt版本众多&#xff0c;几百个版本之间存在不兼容的情况&#xff0c;为此如果要兼容很多版本&#xff0c;没有取巧的办法和特殊的捷径&#xff0c;必须自己亲自安装各个版本编译运行并测试&#xff0c;大问题一般不会有&#xff0c;除非缺少模块&#xff0c;小问…

健壮性测试是什么?

当大多数人开车时&#xff0c;他们不会担心刹车失灵。当他们的孩子得到一个新玩具时&#xff0c;他们也不担心因故障受伤。事实上&#xff0c;大多数人在日常生活中根本不担心系统故障。 这是因为软件开发人员或质量控制工程师已经解决了质量问题。如果目标是交付高质量、可靠…

基础:html5、html、htm、xhtml、dhtml、shtml、shtm、xml、xsl、xslt

一、理解 1.1、HTML5&#xff08; HyperText Markup Language 5 &#xff09; HTML5_百度百科 HTML5 技术结合了 HTML4.01 的相关标准并革新&#xff0c;符合现代网络发展要求&#xff0c;在 2008 年正式发布。HTML5 由不同的技术构成&#xff0c;其在互联网中得到了非常广泛…

TCP/IP五层协议栈(2)

1.传输层协议(TCP传输的机制补充) 1.1.滑动窗口 滑动窗口存在的意义就是在保证可靠性的前提下,尽量提高传输效率. 由于TCP是得保证可靠传输的,所以每一次数据发送时都需要等待对方的ACK.大部分时间都用在等ACK上,而确认应答是可靠传输的主要机制又不能不等.所以有了新的机制…

JavaScript -- 多种类型转换方法总结

文章目录类型转换1 转换为字符串2 转换为数值3 转换为布尔值4 总结类型转换 类型转换指将一种数据类型转换为其他类型 类型转换是根据当前值去创建另一个值&#xff0c;而不是将当前值直接进行转换 这里说到的转换都是显示类型转换&#xff0c;除此之外还有隐式类型转换 1 转…

MnTTS: 开源蒙古语语音合成数据集及其基线模型

本次分享内蒙古大学蒙古文信息处理重点实验室、蒙古文智能信息处理技术国家地方联合工程研究中心及语音理解与生成实验室 (S2LAB) &#xff08;https://ttslr.github.io/index_S2Group.html&#xff09;共同发布的开源蒙古语语音合成数据集及其基线模型。相关论文《MnTTS: An O…

BI业务用户商业分析新时代,如何把数据用透?

数字化转型进入实质性阶段&#xff0c;企业对于数据的需求也随之加深。然而&#xff0c;一些企业积累了大量数据&#xff0c;却难以深度释放数据价值。 近几年&#xff0c;作为数据应用的有力工具&#xff0c;BI商业智能分析平台同样进入了转折期&#xff0c;其发展趋势明显呈…

Nacos后台系统未授权添加管理员

一&#xff1a;什么是nacos Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集&#xff0c;帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。 Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中…

爱奇艺:基于龙蜥与 Koordinator 在离线混部的实践解析 | 龙蜥技术

在 2022 云栖大会龙蜥峰会云原生专场上&#xff0c;来自爱奇艺的基础架构研究员赵慰分享了《基于龙蜥与 Koordinator 的在离线混部实践》技术演讲&#xff0c;以下为本次演讲内容&#xff1a; 一、爱奇艺离线业务混部背景 与众多互联网公司一样&#xff0c;爱奇艺常见的负载…

Go语言学习笔记-A Tour of Go 练习笔记-Images

Exercise: Images 练习题目: Remember the picture generator you wrote earlier? Lets write another one, but this time it will return an implementation of image.Image instead of a slice of data. Define your own Image type, implement the necessary methods, …

您的推特营销选对群控了吗

作为跨境电商从业者&#xff0c;我们都知道&#xff0c;如果平台检测到违规&#xff0c;最多的是多账号关联。平台怎么判定我们的账号是否关联呢&#xff1f;一个重要的依据是浏览器的指纹信息。 一、进行站外引流的困难有哪些&#xff1a; 国内用户在推广海外社交媒体时&…

【OpenCV-Python】教程:3-10 直方图(4)直方图反向投影

OpenCV Python 直方图 反向投影 【目标】 直方图反向投影calcBackProject 【原理】 用于图像分割和查找感兴趣目标。简单的说&#xff0c;会创建一个与输入图像同样大小的图像&#xff08;单通道&#xff09;&#xff0c;每个像素对应像素属于目标的概率。更简单的说就是&am…

pdf文件丢失怎么办?别慌,详细介绍4种恢复方法

pdf文件丢失怎么找到&#xff1f;别慌&#xff0c;停止往电脑上写入新的内容&#xff0c;重要的事情说三遍&#xff01;下面&#xff0c;我们将会向您详细介绍在pdf文件丢失后的多种方法&#xff0c;请继续阅读以获得更多帮助&#xff01; 方法1.运用Windows搜索功能 很多时候…

运放参数-共模输入范围-运算放大器

运放共模输入范围 根据实际的应用我们会选择一个运算放大器&#xff08;op amp&#xff09;&#xff0c;选型过程中工程师会考虑一些参数可例如&#xff1a;电源电压、增益带宽积、输入共模范围、转换速率和输入噪声电压等等。 在本篇文章中重点介绍了运放的输入共模范围的定…