# phtml-template
**Repository Path**: ziyoren/phtml-template
## Basic Information
- **Project Name**: phtml-template
- **Description**: 一个结合了PHP和Webpack的前端模块开发脚手架。
- **Primary Language**: HTML
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2022-03-31
- **Last Updated**: 2022-03-31
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# phtml-template
一个结合了PHP和Webpack的前端模块开发脚手架。
这不是一个现代流行的开发模式,但可以帮你高效的写出漂亮的静态网站。
源于帮朋友写企业站的静态模板,有10来个页面的html+css要处理,其中很多的代码在每个页面中都会出现。大量的重复的代码,想到后期有可能要修改,后怕!习惯了前后端分离的工程化写法,感觉再也回不去写一个页面一个页面的静态文件和裸奔的CSS了,于是就有了这个项目。
## 特点
1. scss写样式,结构清晰,方便调试维护;
1. php拆分模板文件(组件化),方便后期修改调整;
3. 生成html、css和js,方便交付;
## 开发环境需求
* PHP 7+
* NodeJS 12+
## 开始使用
克隆本项目
```sh
git clone git@github.com:ziyoren/phtml-template.git
```
安装Webpack等依赖
```sh
npm install
```
启动开发
```sh
npm start
```
单独构建css、js
```sh
npm run build
```
单独构建HTML文件
```sh
npm run build:html
```
发布项目:
```sh
npm run release
```
## 目录结构
```sh
├── buildHTML #将PHP模板构建为HTML的主要工具
├── composer.json #php composer配置文件
├── dist #构建目标目录,发布后的代码在这里
├── package.json
├── page.json #php模板配置文件
├── php #php的工作目录(含示例)
│ ├── template #页面模板目录
│ │ ├── index.php #默认模板(示例)
│ │ └── layout-main.php #模板示例二
│ ├── 404.php
│ ├── autoload.php #自动加载代码
│ ├── footer.php #示例:footer部分代码
│ ├── header.php #示例:header部分代码
│ ├── index.body.php
│ ├── index.php #重要:入口文件
│ ├── menu.php
│ └── news
│ └── news.body.php
├── src
│ └── assets
│ ├── css #样式示例代码
│ │ ├── home.scss
│ │ ├── lib
│ │ │ ├── body-box.scss
│ │ │ ├── common.scss
│ │ │ ├── footer.scss
│ │ │ ├── header.scss
│ │ │ ├── main-box.scss
│ │ │ ├── menu.scss
│ │ │ └── variable.scss
│ │ └── styles.scss
│ └── js
│ └── styles.js #js入口文件
├── vendor
│ └── ziyoren/html-template #php核心库
└── webpack.config.js #webpack配置文件
```
## page.json
示例:
```json
{
"template": "template/index",
"pages": [
{
"title": "首页",
"name": "index",
"component": "index.body",
"template": "template/layou-main",
},
{
"title": "关于我们",
"name": "about",
"component": "about.body"
},
//......
]
}
```
### page.json配置说明
#### template
* 类型: `string`
* 默认: `template/index`
* 说明:整个项目的基础布局模板。基于php工作目录的相对路径,即对应`php/template/index.php`文件,配置中可省略`.php`的扩展名。
#### pages
* 类型: `json[]`
* 说明:多页面配置数组。由一个或多个页面描述配置json组成。
**title**
* 类型: `string`
* 说明:页面显示的title。可由PHP代码`ziyo::title()`获取并输出在模板中。
**name**
* 类型: `string`
* 说明:每个页面唯一的名称。同时也是生成静态文件的文件名
**component**
* 类型: `string`
* 说明:指定页面的组件模板。是基于php工作目录的相对路径,`.php`扩展名可心省略。
**template**
* 类型: `string`
* 说明:指定本页面的基础模板。优先级高于根节点的template。
## PHP相关代码
### ziyo::title($default='undefined')
输出page.json指定的页面title,如果获取不到则输出$default。
```php
```
### ziyo::require(String $path)
导入指定的模板文件,$path是基于php工作目录的相对路径,`.php`扩展名可心省略。
### ziyo::RouteView()
导入指定的组件模板文件。由page.json的component配置指定组件路径。
### ziyo::className(String $prefix)
输出一个由`$prefix__当前页面名称`形式的样式名称。
```php
ziyo::className('header'); //输出如:header__index
```
### ziyo::link(String $name, $text = '', $options=[])
输出指定页面名称的超链接。开发调试时输出的为动态queryString链接,构建时输出静态链接`[name].html`。
> **$name**: `string` page.json配置页面对应的name
>
> **$text**: `string` 超链接显示的文本
>
> **$option**: `array` 其他配置项。如hash、target等
### 引入核心库
如果要用到以上PHP方法,请在对应的模板文件头部加上以下代码
```php
```