最近在用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. Sound Card Chip

      DELL sigmatel stac   Hewlett-packard conexant High Definition Audio chip   lenovo(IBM) Analo Devic ...

  2. activiti自己定义流程之Spring整合activiti-modeler5.16实例(四):部署流程定义

    注:(1)环境搭建:activiti自己定义流程之Spring整合activiti-modeler5.16实例(一):环境搭建         (2)创建流程模型:activiti自己定义流程之Spr ...

  3. Solid Edge性质管理者 如何获取装配体的BOM表 物料清单

    工具-性质管理者 在里面可以输入每个文件的文件号,版本号,作者等信息   右击点击显示性质,你还可以添加或删除文件属性   把需要的属性更改好了之后,可以输出装配体的所有零件信息到Excel中,点击工 ...

  4. ZOJ3662:Math Magic(全然背包)

    Yesterday, my teacher taught us about math: +, -, *, /, GCD, LCM... As you know, LCM (Least common m ...

  5. [DevExpress]设置列的时间格式

    方法一 设置DisplayFormatFormatString:gFormatType:DateTime 方法二

  6. CSP 201612-4 压缩编码 【区间DP+四边形不等式优化】

    问题描述 试题编号: 201612-4 试题名称: 压缩编码 时间限制: 3.0s 内存限制: 256.0MB 问题描述: 问题描述 给定一段文字,已知单词a1, a2, …, an出现的频率分别t1 ...

  7. HDU 5753Permutation Bo

    Permutation Bo Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) ...

  8. Linux/Android——usb触摸屏驱动 - usbtouchscreen (一)【转】

    本文转载自:http://blog.csdn.net/jscese/article/details/41827495 最近需要往TV上装一个触摸屏设备,现在比较常见的就是使用usb接口的触摸框,适用于 ...

  9. oracle-扫盲贴:存储过程实现增删改查

    原文引入:http://blog.csdn.net/yangzhawen/article/details/8617179 oracle-扫盲贴:存储过程实现增删改查 分类: oracle2013-02 ...

  10. 使用vue-cli启动项目出错

    Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的渐进式框架. Vue 只关注视图层, 采用自底向上增量开发的设计. Vue 的目标是通过尽可能简单的 API 实现响应的数据 ...