man/jade

Laravel Jade 模板引擎,从原生 Jade 二进制文件为 Mac OSX/Linux/Unix 设计

dev-master 2014-01-15 06:33 UTC

This package is not auto-updated.

Last update: 2024-09-24 06:46:35 UTC


README

这是我为朋友的毕业设计项目写的第一个 Laravel 扩展包,希望你会喜欢。

要求

  • Laravel 4
  • Jade 可执行文件(使用 sudo npm install -g jade 安装)
  • *可能在 Windows 机器上无法使用(你可以尝试使用 cygwin 等类似软件)

安装

在你的 composer.json 中添加 "man/jade": "dev-master" 到 require 部分

composer.json

{
	//...
	"require": {
		"laravel/framework": "*",
		"man/jade": "dev-master"
	},
	//...
}

在终端中运行命令 composer update

bash

composer update

之后,在 app/config/app.php 中将 'Man\Jade\JadeServiceProvider' 添加到 'providers',并将 'Jade' => 'Man\Jade\Jade' 添加到别名

app.php

<?php
	'providers' => array(
    //......
		'Illuminate\Workbench\WorkbenchServiceProvider',
        'Man\Jade\JadeServiceProvider'
	),
    'aliases' => array(
    //.......
            'View'            => 'Illuminate\Support\Facades\View',
            'Jade'            => 'Man\Jade\Jade'
        ),

使用示例

首先创建一个 app/jade 文件夹

routes.php

<?php
Route::get("/example",function(){
    $data = [
    "hello" => "You are welcome.",
    "welcome"=>true,
    "list"=>["item1,item2,item3"],
    "escapetxt"=>"<b>bold tags</b>"
    return Jade::render("example/index",$data);
});

注意,View::make('blah') 仍然可以使用。

app/jade/example/index.jade

	if welcome
		ul
			for item in list
				li item
		h1 #{hello}
		p= escapetxt
		p!= escapetxt
	else
		h1 PLEASE LEAVE

HTML 结果

	<ul>
		<li>item 1</li>
		<li>item 2</li>
		<li>item 3</li>
	</ul>
	<h1>You are welcome.</h1>
	<p>&lt;p&gt;bold tags&lt;/p&gt</p>
	<p><b>bold tags</b></p>

错误报告

如果你在 jade 文件中犯错,它将输出错误。####示例

   command:
   '/usr/bin/jade' < '/opt/lampp/htdocs/laravel/app/jade/index.jade' --path /opt/lampp/htdocs/laravel/app/jade/d --obj '{"some":"params"}'

   params:{
       "some": "params"
   }

   Issue:
   /usr/lib/node_modules/jade/lib/runtime.js:202
     throw err;
           ^
   Error: /opt/lampp/htdocs/laravel/app/jade/d:1
     > 1| !!!
       2| h1 deprecated error above ^_^

   `!!!` is deprecated, you must now use `doctype`
       at Object.Lexer.doctype (/usr/lib/node_modules/jade/lib/lexer.js:246:13)
       at Object.Lexer.next (/usr/lib/node_modules/jade/lib/lexer.js:827:15)
       at Object.Lexer.lookahead (/usr/lib/node_modules/jade/lib/lexer.js:111:46)
       at Parser.lookahead (/usr/lib/node_modules/jade/lib/parser.js:111:23)
       at Parser.peek (/usr/lib/node_modules/jade/lib/parser.js:88:17)
       at Parser.parse (/usr/lib/node_modules/jade/lib/parser.js:126:26)
       at parse (/usr/lib/node_modules/jade/lib/jade.js:95:62)
       at Object.exports.compile (/usr/lib/node_modules/jade/lib/jade.js:152:9)
       at ReadStream. (/usr/lib/node_modules/jade/bin/jade.js:126:21)
       at ReadStream.EventEmitter.emit (events.js:117:20)

自定义

修改 vendor/Man/Jade/Jade.php,你可以编辑 jade 二进制文件的存储位置和 app/jade 文件夹以显示视图

Jade.php

$jade_bin = "/usr/bin/jade"; // if you don't know what it is type `which jade` in your terminal
$jade_tpl_path = app_path() . '/jade/'; //enter your template path here,defaulted for laravel at app/jade/

许可协议

MIT