手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表全部文章

blade模板用法123

1、component和include的区别是啥

如果你不用slot。。。那component和include真没啥区别,而且component还是块级调用。而include是行级(可以少写一个@endinclude,不是挺好?)
 
2、includeIf includeWhen include ....应该在什么时候调用
如果你有一堆逻辑判断但不知道怎么拆,或者说觉得放在一页里面比较烦,就用这些来进行简单的区分吧
比如你不知道模板是不是存在,就用includeIf(但这个逻辑很妖,你自己写的代码你不知道它存不存在?)
includeFirst,是指定多个模板,当一个不存在就用下一个。这个不是和includeIf一样?你自己写的你会不知道?
所以。感觉有用的也就includeWhen了。根据逻辑判断来调用相应的子模板
 
3、怎么扩展自己的方法?
不太建议,但如果真要扩展,现阶段已经很容易了,比如我在自己的Yii中就是这样:
XML/HTML代码
  1. $this->blade->getCompiler()  
  2.             ->directive('config', function($environment) {  
  3.                 list($key, $defaultValue) = explode(",", $environment . ",", 2);  
  4.                 $environment = trim($key, "\"'");  
  5.                 return Configure::get($environment, $defaultValue != "," ? rtrim($defaultValue, ",") : null);  
  6.             });  
然后在模板里的用法就是
a、@config(abc),获取Yii::$app->params['abc']
b、@config(abc.def) ,获取Yii::$app->params['abc']['def']
c、@config(abc,123),如果没有定义Yii::$app->params['abc'],就返回默认值123
 
4、如果想用blade模板自带的@csrf @method,得自己实现csrf_field , method_field方法(如果你不实现就直接用,会报这两个方法不存在D)
 
 

nginx + acme.sh + frp ,轻松本地+线上 SSL泛域名

如题的组合。由于本地写代码,比较不方便搞成SSL,毕竟自签名证书现在大部分浏览器都不认了。而且现在微信开发(小程序)、APP等都只认SSL。所以才有了利用frp来进行SSL穿透。

步骤我说的简单一点。不详细 说了

如果不需要内网穿透,其实就是 nginx + acme.sh 就Over了,只是nginx需要配置一下(记得泛域名使用的是fullchain.cer,普通 的单域名是用的xxx.domain.cer)

如果需要内网穿透,步骤简要如下

1、frps -> 设置vhost_http_port(本次假定为8888) ,然后利用supervisor 管理frp (可以使得frp异常崩溃后能够重启)【或者使用systemd,各人喜欢】

2、设置nginx,server_name 为 *.app.neatstudio.com (以app.neatstudio.com为例),在proxy_pass中选择使用upstream,设置为刚才的vhost_http_port,例:

XML/HTML代码
  1. upstream app.neatstudio.com {  
  2.     server 127.0.0.1:8888;  
  3. }  
  4.   
  5. server {  
  6.     listen 80;  
  7.     server_name *.app.neatstudio.com;  
  8.   
  9.     listen 443 ssl;  
  10.     ssl on;  
  11.     ssl_certificate /etc/nginx/ssl/*.app.neatstudio.com.fullchain.cer;  
  12.     ssl_certificate_key /etc/nginx/ssl/*.app.neatstudio.com.key;  
  13.   
  14.     ssl_session_cache shared:SSL:20m;  
  15.     ssl_session_timeout 10m;  
  16.   
  17.     ssl_prefer_server_ciphers       on;  
  18.     ssl_protocols                   TLSv1 TLSv1.1 TLSv1.2;  
  19.     ssl_ciphers                     ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;  
  20.   
  21.     # turn on the OCSP Stapling and verify  
  22.     ssl_stapling on;  
  23.     ssl_stapling_verify on;  
  24.     ssl_trusted_certificate /etc/nginx/ssl/*.app.neatstudio.com.fullchain.cer;  
  25.   
  26.   
  27.   
  28.     add_header Strict-Transport-Security "max-age=31536000";  
  29.   
  30.     location / {  
  31.         proxy_pass http://app.neatstudio.com;  
  32.         include /etc/nginx/proxy_params;  
  33.     }  
  34. }  

3、在本地(或者任意一台想有https的服务器上)安装frpc,设置subdomain就行了,例:

XML/HTML代码
  1. [test.app.ns.com]  
  2. type=http  
  3. port=80  
  4. subdomain=test  

这样就OK了。[]里的test.app.ns.com,为什么取这个名字?是因为。。。frp的客户端中的任意[]包含的TAG,都不能重名(切记)

然后一切Over(因为我使用mac+mamp,所以会更方便的管理域名)

 

Tags: frp, acme.sh, nginx, mamp

犯贱,关机后就没启动

 因为当时买腾讯云偷了个懒,想着低配也得有性能。所以就买了本地磁盘,结果,本地磁盘不能升配。所以就关机做镜像,然而。。。镜像要时间,在做的时候,我关闭了窗口。。结果 就忘了这事。

 

一天没有启动服务器。真尴尬

vue-nprogress-pjax 插件

 基于昨天写的vue+blade+(vue-pjax-adapter),发现没有任何进度提示,感觉比较不直观,但vue-pjax-adapter不能注入方法(或许是我不会)。

在app.js里引入了nprogress后。在axios请求前尝试注入,比如:
JavaScript代码
  1. window.axios.interceptors.request.use((config) => {  
  2.     console.log(before);  
  3.     NProgress.configure({easing: 'ease', speed: 1000, showSpinner: true});  
  4.     NProgress.start();  
  5.     return config;  
  6. });  
  7. window.axios.interceptors.response.use((response) => {  
  8.     NProgress.done();  
  9.     console.log(after);  
  10.     return response;  
  11. }, (error) => {  
  12.     return Promise.reject(error);  
  13. });  
但是没有看到有任何需求。才尝试修改了一下vue-pjax-adapter插件
用法和vue-pjax-adapter完全一样:
XML/HTML代码
  1. import nPjaxAdapter from 'vue-nprogress-pjax';  
  2. window.Vue.use(nPjaxAdapter);  
  3. /**  
  4.  * 如果不是标准的pjax-container,就是这样使用  
  5.  * // window.Vue.use(nPjaxAdapter, {  
  6.  //     targetSelector: '#my-custom-target',  
  7.  // });  
  8.  */  
就这样简单。现在切换页面有进度条了
 代码在这里:https://www.npmjs.com/package/vue-nprogress-pjax
 
 
 

搞定:Yii2+blade+vue+pjax

 如题,利用laravel-mix进行开发。HTML页面的blade,基本上只含主体结构 。具体的页面全部用vue加载(当成一个个的component)

这样就真正完全利用了vue的各种组件,然后也能享受PHP的变量开发,只是这样就得一个个的加载页面了(每次都得加载app.js,一个app.js可是将近2M的)
所以,加载vue-pjax-adapter。利用pjax的特性。少加载很多内容。但这个插件,原来也是for laravel的。用了之后,发现网址不会变了。看了下代码。他的pushState的更换居然是利用response.headers中的x-pjax-url,于是在Yii的controller->afterAction中增加:response->headers->set('x-pjax-url',url::current),一切都搞定
 
在开发的时候,使用mix文件的browseSync+webpack的watch。改动后自动刷新页面。也是一个不算爽的爽功能了
 
减轻不少压力。在没有专业前端的情况下也能享受VUE的开发乐趣(其实就是不用vuex,vue-router等)