1import{_ as l,c as i,a as o,b as s,d as t,w as e,r as c,o as u,e as p}from"./app-B7HVJ7q3.js";const d={};function r(k,n){const a=c("RouteLink");return u(),i("div",null,[n[2]||(n[2]=o(`<h1 id="æ¨¡æ¿æ¸²æä¸éªè¯æä»¶" tabindex="-1"><a class="header-anchor" href="#æ¨¡æ¿æ¸²æä¸éªè¯æä»¶"><span>æ¨¡æ¿æ¸²æä¸éªè¯æä»¶</span></a></h1><p>go-wind-plugins æä¾æ¨¡æ¿æ¸²æåæ°æ®éªè¯æä»¶ï¼ç¨äºé®ä»¶æ¨¡æ¿ãAPI åæ°æ ¡éªçåºæ¯ã</p><h2 id="ä¸ãæ¨¡æ¿æ¸²æ" tabindex="-1"><a class="header-anchor" href="#ä¸ãæ¨¡æ¿æ¸²æ"><span>ä¸ãæ¨¡æ¿æ¸²æ</span></a></h2><h3 id="_1-1-éé å¨å表" tabindex="-1"><a class="header-anchor" href="#_1-1-éé å¨å表"><span>1.1 éé å¨å表</span></a></h3><table><thead><tr><th>éé å¨</th><th>å¯¼å ¥è·¯å¾</th><th>ç¹ç¹</th></tr></thead><tbody><tr><td>Go Template</td><td><code>plugins/template/gotemplate</code></td><td>æ ååº text/html template</td></tr><tr><td>Handlebars</td><td><code>plugins/template/handlebars</code></td><td>çµæ´»çé»è¾æ¨¡æ¿</td></tr><tr><td>Jet</td><td><code>plugins/template/jet</code></td><td>髿§è½ãç»§æ¿æ¯æ</td></tr></tbody></table><h3 id="_1-2-ä½¿ç¨æ¹å¼" tabindex="-1"><a class="header-anchor" href="#_1-2-ä½¿ç¨æ¹å¼"><span>1.2 ä½¿ç¨æ¹å¼</span></a></h3><div class="language-go line-numbers-mode" data-highlighter="prismjs" data-ext="go"><pre><code><span class="line"><span class="token keyword">import</span> templatePlugin <span class="token string">"github.com/tx7do/go-wind-plugins/template/gotemplate"</span></span> 2<span class="line"></span> 3<span class="line">renderer <span class="token operator">:=</span> templatePlugin<span class="token punctuation">.</span><span class="token function">New</span><span class="token punctuation">(</span></span> 4<span class="line"> templatePlugin<span class="token punctuation">.</span><span class="token function">WithRoot</span><span class="token punctuation">(</span><span class="token string">"./templates"</span><span class="token punctuation">)</span><span class="token punctuation">,</span></span> 5<span class="line"> templatePlugin<span class="token punctuation">.</span><span class="token function">WithSuffix</span><span class="token punctuation">(</span><span class="token string">".html"</span><span class="token punctuation">)</span><span class="token punctuation">,</span></span> 6<span class="line"> templatePlugin<span class="token punctuation">.</span><span class="token function">WithFuncMap</span><span class="token punctuation">(</span>template<span class="token punctuation">.</span>FuncMap<span class="token punctuation">{</span></span> 7<span class="line"> <span class="token string">"formatTime"</span><span class="token punctuation">:</span> formatTime<span class="token punctuation">,</span></span> 8<span class="line"> <span class="token string">"currency"</span><span class="token punctuation">:</span> formatCurrency<span class="token punctuation">,</span></span> 9<span class="line"> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">,</span></span> 10<span class="line"><span class="token punctuation">)</span></span> 11<span class="line"></span> 12<span class="line"><span class="token comment">// æ¸²ææ¨¡æ¿</span></span> 13<span class="line">output<span class="token punctuation">,</span> <span class="token boolean">_</span> <span class="token operator">:=</span> renderer<span class="token punctuation">.</span><span class="token function">Render</span><span class="token punctuation">(</span><span class="token string">"email/welcome"</span><span class="token punctuation">,</span> <span class="token keyword">map</span><span class="token punctuation">[</span><span class="token builtin">string</span><span class="token punctuation">]</span><span class="token keyword">interface</span><span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">{</span></span> 14<span class="line"> <span class="token string">"UserName"</span><span class="token punctuation">:</span> <span class="token string">"Alice"</span><span class="token punctuation">,</span></span> 15<span class="line"> <span class="token string">"VerifyURL"</span><span class="token punctuation">:</span> <span class="token string">"https://app.example.com/verify?token=abc"</span><span class="token punctuation">,</span></span> 16<span class="line"><span class="token punctuation">}</span><span class="token punctuation">)</span></span> 17<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="_1-3-模æ¿ç»§æ¿-jet" tabindex="-1"><a class="header-anchor" href="#_1-3-模æ¿ç»§æ¿-jet"><span>1.3 模æ¿ç»§æ¿ï¼Jetï¼</span></a></h3><div class="language-go line-numbers-mode" data-highlighter="prismjs" data-ext="go"><pre><code><span class="line"><span class="token keyword">
17import</span> jetPlugin <span class="token string">"github.com/tx7do/go-wind-plugins/template/jet"</span></span> 18<span class="line"></span> 19<span class="line">renderer <span class="token operator">:=</span> jetPlugin<span class="token punctuation">.</span><span class="token function">New</span><span class="token punctuation">(</span></span> 20<span class="line"> jetPlugin<span class="token punctuation">.</span><span class="token function">WithRoot</span><span class="token punctuation">(</span><span class="token string">"./views"</span><span class="token punctuation">)</span><span class="token punctuation">,</span></span> 21<span class="line"> jetPlugin<span class="token punctuation">.</span><span class="token function">WithDevelopmentMode</span><span class="token punctuation">(</span><span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token comment">// çéè½½</span></span> 22<span class="line"><span class="token punctuation">)</span></span> 23<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><div class="language-jet line-numbers-mode" data-highlighter="prismjs" data-ext="jet"><pre><code><span class="line">// views/layout.jet</span> 24<span class="line">{{block content()}}{{end}}</span> 25<span class="line"></span> 26<span class="line">// views/page.jet</span> 27<span class="line">{{extends "layout.jet"}}</span> 28<span class="line">{{block content()}}</span> 29<span class="line"> <h1>{{.Title}}</h1></span> 30<span class="line"> <p>{{.Content}}</p></span> 31<span class="line">{{end}}</span> 32<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="äºãæ°æ®éªè¯" tabindex="-1"><a class="header-anchor" href="#äºãæ°æ®éªè¯"><span>äºãæ°æ®éªè¯</span></a></h2><h3 id="_2-1-éé å¨" tabindex="-1"><a class="header-anchor" href="#_2-1-éé å¨"><span>2.1 éé å¨</span></a></h3><div class="language-go line-numbers-mode" data-highlighter="prismjs" data-ext="go"><pre><code><span class="line"><span class="token keyword">import</span> validatorPlugin <span class="token string">"github.com/tx7do/go-wind-plugins/validator"</span></span> 33<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="_2-2-ç»æä½éªè¯" tabindex="-1"><a class="header-anchor" href="#_2-2-ç»æä½éªè¯"><span>2.2 ç»æä½éªè¯</span></a></h3><div class="language-go line-numbers-mode" data-highlighter="prismjs" data-ext="go"><pre><code><span class="line"><span class="token keyword">type</span> CreateUserRequest <span class="token keyword">struct</span> <span class="token punctuation">{</span></span> 34<span class="line"> Username <span class="token builtin">string</span> <span class="token string">\`json:"username" validate:"required,min=3,max=32"\`</span></span> 35<span class="line"> Email <span class="token builtin">string</span> <span class="token string">\`json:"email" validate:"required,email"\`</span></span> 36<span class="line"> Password <span class="token builtin">string</span> <span class="token string">\`json:"password" validate:"required,min=8,max=128"\`</span></span> 37<span class="line"> Age <span class="token builtin">int</span> <span class="token string">\`json:"age" validate:"gte=18,lte=120"\`</span></span> 38<span class="line"> Phone <span class="token builtin">string</span> <span class="token string">\`json:"phone" validate:"required,e164"\`</span></span> 39<span class="line"><span class="token punctuation">}</span></span> 40<span class="line"></span> 41<span class="line"><span class="token keyword">func</span> <span class="token function">
41handleCreateUser</span><span class="token punctuation">(</span>w http<span class="token punctuation">.</span>ResponseWriter<span class="token punctuation">,</span> r <span class="token operator">*</span>http<span class="token punctuation">.</span>Request<span class="token punctuation">)</span> <span class="token punctuation">{</span></span> 42<span class="line"> <span class="token keyword">var</span> req CreateUserRequest</span> 43<span class="line"> json<span class="token punctuation">.</span><span class="token function">NewDecoder</span><span class="token punctuation">(</span>r<span class="token punctuation">.</span>Body<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">Decode</span><span class="token punctuation">(</span><span class="token operator">&</span>req<span class="token punctuation">)</span></span> 44<span class="line"></span> 45<span class="line"> <span class="token keyword">if</span> err <span class="token operator">:=</span> validatorPlugin<span class="token punctuation">.</span><span class="token function">Validate</span><span class="token punctuation">(</span>req<span class="token punctuation">)</span><span class="token punctuation">;</span> err <span class="token operator">!=</span> <span class="token boolean">nil</span> <span class="token punctuation">{</span></span> 46<span class="line"> <span class="token comment">// è¿åéªè¯é误</span></span> 47<span class="line"> http<span class="token punctuation">.</span><span class="token function">Error</span><span class="token punctuation">(</span>w<span class="token punctuation">,</span> err<span class="token punctuation">.</span><span class="token function">Error</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> http<span class="token punctuation">.</span>StatusBadRequest<span class="token punctuation">)</span></span> 48<span class="line"> <span class="token keyword">return</span></span> 49<span class="line"> <span class="token punctuation">}</span></span> 50<span class="line"></span> 51<span class="line"> <span class="token comment">// éªè¯éè¿ï¼å¤çä¸å¡é»è¾</span></span> 52<span class="line"><span class="token punctuation">}</span></span> 53<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="_2-3-éªè¯è§å" tabindex="-1"><a class="header-anchor" href="#_2-3-éªè¯è§å"><span>2.3 éªè¯è§å</span></a></h3><table><thead><tr><th>Tag</th><th>说æ</th><th>示ä¾</th></tr></thead><tbody><tr><td><code>required</code></td><td>å¿ å¡«</td><td><code>validate:"required"</code></td></tr><tr><td><code>min</code> / <code>max</code></td><td>æå°/æå¤§é¿åº¦</td><td><code>validate:"min=3,max=32"</code></td></tr><tr><td><code>len</code></td><td>åºå®é¿åº¦</td><td><code>validate:"len=11"</code></td></tr><tr><td><code>gte</code> / <code>lte</code></td><td>æ°å¼èå´</td><td><code>validate:"gte=18,lte=120"</code></td></tr><tr><td><code>email</code></td><td>é®ç®±æ ¼å¼</td><td><code>validate:"email"</code></td></tr><tr><td><code>url</code></td><td>URL æ ¼å¼</td><td><code>validate:"url"</code></td></tr><tr><td><code>uuid</code></td><td>UUID æ ¼å¼</td><td><code>validate:"uuid"</code></td></tr><tr><td><code>e164</code></td><td>ææºå·</td><td><code>validate:"e164"</code></td></tr><tr><td><code>oneof</code></td><td>æä¸¾å¼</td><td><code>validate:"oneof=red green blue"</code></td></tr><tr><td><code>unique</code></td><td>å¯ä¸æ§</td><td><code>validate:"unique"</code></td></tr><tr><td><code>datetime</code></td><td>æ¥ææ¶é´</td><td><code>validate:"datetime=2006-01-02"</code></td></tr><tr><td><code>ip</code></td><td>IP å°å</td><td><code>validate:"ip"</code></td></tr><tr><td><code>uuid4</code></td><td>UUID v4</td><td><code>validate:"uuid4"</code></td></tr></tbody></table><h3 id="_2-4-èªå®ä¹éªè¯" tabindex="-1"><a class="header-anchor" href="#_2-4-èªå®ä¹éªè¯"><span>2.4 èªå®ä¹éªè¯</span></a></h3><div class="language-go line-numbers-mode" data-highlighter="prismjs" data-ext="go"><pre><code><span class="line"><span class="token comment">// 注åèªå®ä¹éªè¯å¨</span></span> 54<span class="line">
54validatorPlugin<span class="token punctuation">.</span><span class="token function">RegisterValidation</span><span class="token punctuation">(</span><span class="token string">"strong_password"</span><span class="token punctuation">,</span> <span class="token keyword">func</span><span class="token punctuation">(</span>fl validator<span class="token punctuation">.</span>FieldLevel<span class="token punctuation">)</span> <span class="token builtin">bool</span> <span class="token punctuation">{</span></span> 55<span class="line"> password <span class="token operator">:=</span> fl<span class="token punctuation">.</span><span class="token function">Field</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">String</span><span class="token punctuation">(</span><span class="token punctuation">)</span></span> 56<span class="line"> hasUpper <span class="token operator">:=</span> regexp<span class="token punctuation">.</span><span class="token function">MustCompile</span><span class="token punctuation">(</span><span class="token string">\`[A-Z]\`</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">MatchString</span><span class="token punctuation">(</span>password<span class="token punctuation">)</span></span> 57<span class="line"> hasLower <span class="token operator">:=</span> regexp<span class="token punctuation">.</span><span class="token function">MustCompile</span><span class="token punctuation">(</span><span class="token string">\`[a-z]\`</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">MatchString</span><span class="token punctuation">(</span>password<span class="token punctuation">)</span></span> 58<span class="line"> hasDigit <span class="token operator">:=</span> regexp<span class="token punctuation">.</span><span class="token function">MustCompile</span><span class="token punctuation">(</span><span class="token string">\`\\d\`</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">MatchString</span><span class="token punctuation">(</span>password<span class="token punctuation">)</span></span> 59<span class="line"> hasSpecial <span class="token operator">:=</span> regexp<span class="token punctuation">.</span><span class="token function">MustCompile</span><span class="token punctuation">(</span><span class="token string">\`[!@#$%^&*]\`</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">MatchString</span><span class="token punctuation">(</span>password<span class="token punctuation">)</span></span> 60<span class="line"> <span class="token keyword">return</span> hasUpper <span class="token operator">&&</span> hasLower <span class="token operator">&&</span> hasDigit <span class="token operator">&&</span> hasSpecial</span> 61<span class="line"><span class="token punctuation">}</span><span class="token punctuation">)</span></span> 62<span class="line"></span> 63<span class="line"><span class="token keyword">type</span> RegisterRequest <span class="token keyword">struct</span> <span class="token punctuation">{</span></span> 64<span class="line"> Password <span class="token builtin">string</span> <span class="token string">\`json:"password" validate:"required,strong_password"\`</span></span> 65<span class="line"><span class="token punctuation">}</span></span> 66<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="_2-5-䏿éè¯¯æ¶æ¯" tabindex="-1"><a class="header-anchor" href="#_2-5-䏿éè¯¯æ¶æ¯"><span>2.5 䏿éè¯¯æ¶æ¯</span></a></h3><div class="language-go line-numbers-mode" data-highlighter="prismjs" data-ext="go"><pre><code><span class="line">
66validatorPlugin<span class="token punctuation">.</span><span class="token function">RegisterTranslations</span><span class="token punctuation">(</span><span class="token string">"zh"</span><span class="token punctuation">,</span> <span class="token keyword">map</span><span class="token punctuation">[</span><span class="token builtin">string</span><span class="token punctuation">]</span><span class="token builtin">string</span><span class="token punctuation">{</span></span> 67<span class="line"> <span class="token string">"required"</span><span class="token punctuation">:</span> <span class="token string">"{0}ä¸ºå¿ å¡«é¡¹"</span><span class="token punctuation">,</span></span> 68<span class="line"> <span class="token string">"min"</span><span class="token punctuation">:</span> <span class="token string">"{0}é¿åº¦ä¸è½å°äº{1}个å符"</span><span class="token punctuation">,</span></span> 69<span class="line"> <span class="token string">"max"</span><span class="token punctuation">:</span> <span class="token string">"{0}é¿åº¦ä¸è½è¶ è¿{1}个å符"</span><span class="token punctuation">,</span></span> 70<span class="line"> <span class="token string">"email"</span><span class="token punctuation">:</span> <span class="token string">"{0}æ ¼å¼ä¸æ£ç¡®"</span><span class="token punctuation">,</span></span> 71<span class="line"> <span class="token string">"gte"</span><span class="token punctuation">:</span> <span class="token string">"{0}å¿ é¡»å¤§äºæçäº{1}"</span><span class="token punctuation">,</span></span> 72<span class="line"> <span class="token string">"lte"</span><span class="token punctuation">:</span> <span class="token string">"{0}å¿ é¡»å°äºæçäº{1}"</span><span class="token punctuation">,</span></span> 73<span class="line"> <span class="token string">"oneof"</span><span class="token punctuation">:</span> <span class="token string">"{0}å¿ é¡»æ¯{1}ä¸çä¸ä¸ª"</span><span class="token punctuation">,</span></span> 74<span class="line"> <span class="token string">"strong_password"</span><span class="token punctuation">:</span> <span class="token string">"å¯ç å¿ é¡»å å«å¤§å°ååæ¯ãæ°ååç¹æ®å符"</span><span class="token punctuation">,</span></span> 75<span class="line"><span class="token punctuation">}</span><span class="token punctuation">)</span></span> 76<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="_2-6-yaml-é ç½®" tabindex="-1"><a class="header-anchor" href="#_2-6-yaml-é ç½®"><span>2.6 YAML é ç½®</span></a></h3><div class="language-yaml line-numbers-mode" data-highlighter="prismjs" data-ext="yml"><pre><code><span class="line"><span class="token key atrule">validator</span><span class="token punctuation">:</span></span> 77<span class="line"> <span class="token key atrule">locale</span><span class="token punctuation">:</span> zh <span class="token comment"># zh | en</span></span> 78<span class="line"> <span class="token key atrule">custom_rules</span><span class="token punctuation">:</span></span> 79<span class="line"> <span class="token punctuation">-</span> <span class="token key atrule">name</span><span class="token punctuation">:</span> phone_cn</span> 80<span class="line"> <span class="token key atrule">regex</span><span class="token punctuation">:</span> <span class="token string">"^1[3-9]\\\\d{9}$"</span></span> 81<span class="line"> <span class="token key atrule">message</span><span class="token punctuation">:</span> <span class="token string">"ææºå·æ ¼å¼ä¸æ£ç¡®"</span></span> 82<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="ä¸ãå½é å-i18n" tabindex="-1"><a class="header-anchor" href="#ä¸ãå½é å-i18n"><span>ä¸ãå½é åï¼i18nï¼</span></a></h2><div class="language-go line-numbers-mode" data-highlighter="prismjs" data-ext="go"><pre><code><span class="line"><span class="token keyword">
82import</span> i18nPlugin <span class="token string">"github.com/tx7do/go-wind-plugins/i18n"</span></span> 83<span class="line"></span> 84<span class="line">translator <span class="token operator">:=</span> i18nPlugin<span class="token punctuation">.</span><span class="token function">New</span><span class="token punctuation">(</span></span> 85<span class="line"> i18nPlugin<span class="token punctuation">.</span><span class="token function">WithLocaleDir</span><span class="token punctuation">(</span><span class="token string">"./locales"</span><span class="token punctuation">)</span><span class="token punctuation">,</span></span> 86<span class="line"> i18nPlugin<span class="token punctuation">.</span><span class="token function">WithDefaultLocale</span><span class="token punctuation">(</span><span class="token string">"zh-CN"</span><span class="token punctuation">)</span><span class="token punctuation">,</span></span> 87<span class="line"><span class="token punctuation">)</span></span> 88<span class="line"></span> 89<span class="line"><span class="token comment">// ç¿»è¯</span></span> 90<span class="line">msg <span class="token operator">:=</span> translator<span class="token punctuation">.</span><span class="token function">T</span><span class="token punctuation">(</span><span class="token string">"welcome"</span><span class="token punctuation">,</span> <span class="token keyword">map</span><span class="token punctuation">[</span><span class="token builtin">string</span><span class="token punctuation">]</span><span class="token keyword">interface</span><span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">{</span></span> 91<span class="line"> <span class="token string">"name"</span><span class="token punctuation">:</span> <span class="token string">"Alice"</span><span class="token punctuation">,</span></span> 92<span class="line"><span class="token punctuation">}</span><span class="token punctuation">)</span></span> 93<span class="line"><span class="token comment">// "欢è¿ï¼Aliceï¼"</span></span> 94<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><div class="language-yaml line-numbers-mode" data-highlighter="prismjs" data-ext="yml"><pre><code><span class="line"><span class="token comment"># locales/zh-CN.yaml</span></span> 95<span class="line"><span class="token key atrule">welcome</span><span class="token punctuation">:</span> <span class="token string">"欢è¿ï¼{name}ï¼"</span></span> 96<span class="line"><span class="token key atrule">errors</span><span class="token punctuation">:</span></span> 97<span class="line"> <span class="token key atrule">not_found</span><span class="token punctuation">:</span> <span class="token string">"èµæºä¸åå¨"</span></span> 98<span class="line"> <span class="token key atrule">unauthorized</span><span class="token punctuation">:</span> <span class="token string">"æªææ"</span></span> 99<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="ç¸å ³ææ¡£" tabindex="-1"><a class="header-anchor" href="#ç¸å ³ææ¡£"><span>ç¸å ³ææ¡£</span></a></h2>`,27)),s("ul",null,[s("li",null,[t(a,{to:"/framework/plugins-config.html"},{default:e(()=>[...n[0]||(n[0]=[p("æä»¶é 置系ç»",-1)])]),_:1})]),s("li",null,[t(a,{to:"/framework/plugins-intro.html"},{default:e(()=>[...n[1]||(n[1]=[p("æä»¶æ»è§",-1)])]),_:1})])])])}const v=l(d,[["render",r]]),g=JSON.parse('{"path":"/framework/plugins-template.html","title":"æ¨¡æ¿æ¸²æä¸éªè¯æä»¶","lang":"en-US","frontmatter":{},"headers":[{"level":2,"title":"ä¸ãæ¨¡æ¿æ¸²æ","slug":"ä¸ãæ¨¡æ¿æ¸²æ","link":"#ä¸ãæ¨¡æ¿æ¸²æ","children":[{"level":3,"title":"1.1 éé å¨å表","slug":"_1-1-éé å¨å表","link":"#_1-1-éé å¨å表","children":[]},{"level":3,"title":"1.2 ä½¿ç¨æ¹å¼","slug":"_1-2-ä½¿ç¨æ¹å¼","link":"#_1-2-ä½¿ç¨æ¹å¼","children":[]},{"level":3,"title":"1.3 模æ¿ç»§æ¿ï¼Jetï¼","slug":"_1-3-模æ¿ç»§æ¿-jet","link":"#_1-3-模æ¿ç»§æ¿-jet","children":[]}]},{"level":2,"title":"äºãæ°æ®éªè¯","slug":"äºãæ°æ®éªè¯","link":"#äºãæ°æ®éªè¯","children":[{"level":3,"title":"2.1 éé å¨","slug":"_2-1-éé å¨","link":"#_2-1-éé å¨","children":[]},{"level":3,"title":"2.2 ç»æä½éªè¯","slug":"_2-2-ç»æä½éªè¯","link":"#_2-2-ç»æä½éªè¯","children":[]}
99,{"level":3,"title":"2.3 éªè¯è§å","slug":"_2-3-éªè¯è§å","link":"#_2-3-éªè¯è§å","children":[]},{"level":3,"title":"2.4 èªå®ä¹éªè¯","slug":"_2-4-èªå®ä¹éªè¯","link":"#_2-4-èªå®ä¹éªè¯","children":[]},{"level":3,"title":"2.5 䏿éè¯¯æ¶æ¯","slug":"_2-5-䏿éè¯¯æ¶æ¯","link":"#_2-5-䏿éè¯¯æ¶æ¯","children":[]},{"level":3,"title":"2.6 YAML é
ç½®","slug":"_2-6-yaml-é
ç½®","link":"#_2-6-yaml-é
ç½®","children":[]}]},{"level":2,"title":"ä¸ãå½é
åï¼i18nï¼","slug":"ä¸ãå½é
å-i18n","link":"#ä¸ãå½é
å-i18n","children":[]},{"level":2,"title":"ç¸å
³ææ¡£","slug":"ç¸å
³ææ¡£","link":"#ç¸å
³ææ¡£","children":[]}],"git":{"updatedTime":1782048507000,"contributors":[{"name":"Bobo","username":"Bobo","email":"[email protected]","commits":1,"url":"https://github.com/Bobo"}],"changelog":[{"hash":"26902396683277256db28022df417e6070907850","time":1782048507000,"email":"[email protected]","author":"Bobo","message":"docs(bootstrap): æ·»å Bootstrap æ¡æ¶ç¸å
³ææ¡£"}]},"filePathRelative":"framework/plugins-template.md"}');export{v as comp,g as data};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.