最近在用Laravel这个PHP框架搭网站,大致了解这个框架的目录结构之后感觉学到了不少东西。


首先安装好包管理器:

PHP部分当然用composer,安装在全局目录下方便一点。

前端部分,我没有选择npm而是使用更“先进”的yarn。


可以打开 Laravel的官方文档 以供参考。

我写这文章是为了理清楚自己的开发思路,以前我直接把整个网站项目从服务器复制到自己的电脑上进行编写,但是这样需要复制的东西实在太多了,大部分是我根本就不会去动第三方的库。所以我得搞清楚如何做能够只需要下载最少的文件,就能够保持我电脑与服务器的文件的同步。这样也方便在本地开服务器进行代码测试,而不用每次都得同步本地修改到服务器,再从服务器测试代码运行结果。

大致的思路就是,只同步包管理器的配置文件,再在本地通过包管理器读取这些配置文件下载与服务器相同的第三方库。

1. PHP的依赖

安装好Larvel之后,根目录下会有composer用于存放第三方库的文件夹 vendor,这个文件夹里的东西全部可以加进.gitignore,事实上Laravel默认gitignore 也是这么做的。我们只需要在git加上composer.json就可以同步PHP所使用的库了。

这样从git pull下来的repo,只需要执行composer install就能获得与服务器上相同的库。

2. 前端项目的依赖

前端的库都会放在 Laravel 根目录下 node_modules 目录(以下简称nm)里,这个nm应该放在gitignore里,不同步到git,仅同步packages.json 及 yarn.lock(如果用yarn来替代npm的话)。

本地的repo里,只需要yarn install便能获得与服务器上相同的库。

3. 前端资源的存放

Laravel还有两个文件夹public及resources,本来我一直都是把css js以及其他资源文件比如图片直接放在public文件夹里的,但是似乎这么做是不妥的,特别是使用scss/sass以及Typescript这种需要编译才能生成实际浏览器使用的css/js的文件。

一种比较合理的做法是,将scss以及typescript放在resources里,转译出的最终文件放在public下。这样浏览器可以访问最终css/js文件,但是访问不到源文件。如果转译再minify的话这样做也很方便。总之就是将源文件剥离出public目录,防止用户访问。

转译之类的操作可以使用webpack,同时还可以实现更多高级特性比如模块化。

Laravel 网站项目目录结构规划的更多相关文章

  1. Laravel项目目录结构说明

    Laravel项目目录结构说明: |- vendor 目录包含你的 Composer 依赖模块及laravel框架. |- bootstrap 目录包含几个框架启动跟自动加载配置的文件. |- app ...

  2. 网站项目后台的目录命名为admin后,网页莫名其妙的变样了

    这是我的第一篇博客文章,与其说是分享经验,倒不如说是求助 最近因为要完成一个课程设计,在拿一个现成的项目过来改,要用到select下拉菜单,可是发觉怎么我的这个下拉菜单怎么变样了 刚开始它是这样的 感 ...

  3. .Net修改网站项目调试时的虚拟目录(未验证)

    有些项目需要在IIS发布的时候,将网站发布到虚拟目录,为了保持调试和发布的路径同一,一般会修改VS调试的虚拟目录 一.Web应用程序 Web应用程序的修改方式非常简单,在解决方案资源管理器->项 ...

  4. .Net修改网站项目调试时的虚拟目录

    点中网站项目按F4,虚拟目录那个栏目全部删掉!

  5. 推荐 Laravel API 项目必须使用的 8 个扩展包

    如今在现代网络开发中,比较流行的模式是基于 API 开发,可以通过手机或网站来创建服务. Laravel 是创建基于 API 的项目的最佳框架之一,它为世界各地的大型社区提供了高速开发. Larave ...

  6. Laravel大型项目系列教程(三)之发表文章

    Laravel大型项目系列教程(三)之发表文章 一.前言 上一节教程中完成了用户管理,这节教程将大概完成发表Markdown格式文章并展示的功能. 二.Let's go 1.数据库迁移 文章模块中我们 ...

  7. Laravel大型项目系列教程(一)

    Laravel大型项目系列教程(一) 一.课程概述 1.课程介绍 本教程将使用Laravel完成一个多用户的博客系统,大概会包含如下内容: 路由管理. 用户管理,如用户注册.修改信息.锁定用户等. 文 ...

  8. vs2012中程序集生成无法自动在网站Bin目录下生成Dll文件?(已解决!)

    最近,突然发现生成程序集后,网站bin目录下dll没有更新,也没有自动生成dll文件,通过近半个小时的摸索和实验,找到了解决方法: 1.右键网站,不是项目,选择[属性页],在左侧[引用]中如果没有,就 ...

  9. j2ee网站项目首页如何直接使用action

    之前做过一些网站项目,大多数都是首页就是登录,直接进入首页的不多,也就没有注意到,今天刚好注意到了就来记一下.也算是一个小技巧 <welcome-file>index.jsp</we ...

随机推荐

  1. 贪吃蛇 c++ ncurses

    近期学ncurses.用贪吃蛇训练下 思路:不构造链表.蛇头向前进方向打点,蛇尾逐点消失,形成移动. 须要记录蛇头方向,蛇尾方向.并用list仿造队列,增加拐点信息(空间比链表每一个结点开辟空间节省非 ...

  2. vue组件之间的通信,父子之间的数据通信

    父子组件之间的通信问题既可以传递数据也可以传递变量,父组件传递数据给子组件可以使用props,子组件传递数据给父组件则可以自定义函数来监听子组件的事件发射器. 首先说说组件注册,组件的注册分为全局注册 ...

  3. Cocos2d-x3.1下 Android,APK自己主动升级

    项目要做Android的自己主动升级,对于我们之前做iOS的转Cocos开发做Android方面的功能..... 不正确说了.这里记录下我的实现过程. 原文地址:http://blog.csdn.ne ...

  4. iOS开发——高级篇——线程同步、线程依赖、线程组

    前言 对于iOS开发中的网络请求模块,AFNet的使用应该是最熟悉不过了,但你是否把握了网络请求正确的完成时机?本篇文章涉及线程同步.线程依赖.线程组等专用名词的含义,若对上述名词认识模糊,可先进行查 ...

  5. js中createlement和creatTextnode属性

    js中可以使用creatElement方法创造一个新的元素,使用creatTextnode创造一个新的text文本元素. 之后使用appendchild插入到已存在的元素中. ** window.on ...

  6. (转)web会话管理方式

    阅读目录 1. 基于server端session的管理 2. cookie-based的管理方式 3. token-based的管理方式 4. 安全问题 5. 总结 http是无状态的,一次请求结束, ...

  7. Android源码的下载、编译与导入到Android Studio【转】

    本文转载自:http://wl9739.github.io/2016/05/09/Android%E6%BA%90%E7%A0%81%E7%9A%84%E4%B8%8B%E8%BD%BD%E3%80% ...

  8. docker映射端口与ssh访问或容器访问

    映射端口 -d 后台执行 -p映射端口 --privileged 可以使用systemctl # docker run --privileged -d -p 9000:80 jiqing9006/ce ...

  9. EasyUI Form表单提交

    转自:https://www.cnblogs.com/net5x/articles/4576926.html Form(表单) 使用$.fn.form.defaults重写默认值对象 form提供了各 ...

  10. 【145】◀▶ .NET Framework类库索引

    C#编程基础: A1 ………… 基础A2 ………… using 关键字A3 ………… as 关键字A4 ………… is 关键字A5 ………… switch 关键字A6 ………… return 语句关键 ...