ãã«ããŒãSyncãŸãã¯AsyncãšããŠç»é²ãããšãã³ãŒã«ããã¯ããªãã¹ã³ããã³ãŒã«ããã¯ããããŒã¿ãååŸããã®ã«åœ¹ç«ã¡ãŸãã
ããã¯éå»ã«çºçããããšããããŸããããŠãŒã¹ã±ãŒã¹ãæ確ã§ã¯ãªãã£ããããç§ãã¡ã¯ããã«åºã¥ããŠè¡åããŸããã§ããã ãã³ãã«ããŒã¯ããã¹ãŠã®ããŒã¿ãã¬ã³ããªã³ã°ã«äœ¿çšã§ããããã«ãªããŸã§åŸ æ©ããå¿ èŠããããããéåæè©äŸ¡ãæäŸããããšã¯ãã³ã³ããã¹ããçæããã³ãŒããã¯ããã«å¹ççãªæ¹æ³ã§å®è¡ã§ããããšã®äŸ¿å®ã«ãããŸããã
åºæ¬çã«ããã®æç¹ã§éåæè©äŸ¡ãè¿œå ãããšãäºææ§ãšå®è¡æã®ããã©ãŒãã³ã¹ã®äž¡æ¹ã®ç¹ã§éåžžã«ã³ã¹ããããããŸãããçŸæç¹ã§ã¯ãŠãŒã¹ã±ãŒã¹ã¯ããŸãèŠãããŸããã ããªããããããšããŠããããšã®å ·äœçãªäŸã¯ãããŸããïŒ
ããã©ãŒãã³ã¹ã®åé¡ã«ã¯åæããŸãããRegisterHelperãRegisterHelperAsyncãªã©ã®ãªãã·ã§ã³ã§aysncã«ããããšãã§ããã°ããã£ãšè¯ããšæããŸãã
å®éãnode.jsã䜿çšããŠãããšãã«ããããã®éåæãã³ãã«ããŒã«ã€ããŠèããããã«ãªããŸããã ç§ã¯express.jsã䜿çšããŠããã€ãã®ã¢ããªã±ãŒã·ã§ã³ã«åãçµãã§ããã䜿çšãããã³ãã¬ãŒããšã³ãžã³ã¯ãã³ãã«ããŒã§ãã ãããã£ãŠããã¥ãŒã®ã³ã³ãã€ã«äžã«ããŒã¿ããŒã¹åŒã³åºãããå€ãååŸããå¿ èŠãããå Žåããã®åæåäœã§ã¯äžå¯èœã§ãã
äŸãã°ã
Handlebars.registerHelper('getDbValue', function(id) {
var Model = require('./myModel.js');
Model.getValue(id, function(data){
return data;
});
});
äžèšã®äŸã¯æ©èœãããäœãè¿ããŸããã 以äžã¯ç§ã®ã³ã³ã»ããã§ãã ãããŠããããå®å šã«æ£ããã®ãããããšãå®è£ ã§ããã®ãã©ããã¯ããããŸããã éåæã¡ãœããã®å Žåãreturnã®ä»£ããã«ã³ãŒã«ããã¯é¢æ°ã䜿çšããã ãã§ãã
Handlebars.registerHelperAsync('getDbValue', function(id, callback) {
var Model = require('./myModel.js');
Model.getValue(id, function(data){
callback(data);
//or
//callback(new Handlebars.SafeString(data)); //in case of safestring.
});
});
äžèšã®ãããªåé¡ãããã«çºçããŠããŸãããã®æ©èœã«èå³ããã人ãããã°ãã·ããªãªã«å¿ããŠããã«å€ãã®äŸã瀺ãããšãã§ããŸãã
ããããšã
@robincsamuel ããã¥ãŒã®çæã«ããŒã¿ããŒã¹ã«ãã¯ã¢ãããå«ããå ŽåãMVCåé¢ã®å šäœçãªã¢ã€ãã¢ã¯ãŠã£ã³ããŠã«è¡šç€ºãããŸãã ãã¥ãŒãã¬ã³ããªã³ã°ããããŸã§ããŒã¿ãå¿ èŠãã©ããããããªããããããªããšäž»åŒµããŠãããšæããŸããããã¥ãŒãçæãããšãã§ã¯ãªããã³ã³ãããŒã©ãŒã¬ãã«ã§å®è£ ããå¿ èŠãããæ©èœãææ¡ããŠããŸãã @kpdeckerãèšåããããã©ãŒãã³ã¹ã®èæ ®äºé ãšçµã¿åããããšãéåæãã«ããŒã¯ééã£ãŠããããã«èŠããŸãã -ç§ã®2c
ç§ã¯èªåã®åé¡ãäŒããããã«ãã®äŸã䜿çšããŸããã ãããŠãç§ã¯è°è«ããããšã¯ããŠããŸãããããã ææ¡ãããŸããã ãã«ããŒããã®ã³ãŒã«ããã¯ã䜿çšããŠé¢æ°ãåŒã³åºããšåœ¹ç«ã€ããšãé¡ã£ãŠããŸãã ãšã«ããããæéãããã ãããããšãããããŸã:) @kpdecker @jwilm
ãã®æç¹ã§ã®ãããžã§ã¯ãã®ã¹ã¿ã³ã¹ã¯ããã³ãã¬ãŒããåŒã³åºãåã«ããŒã¿è§£æ±ºãè¡ãå¿ èŠããããšããããšã§ãã ãã³ãã¬ãŒãã®æžå¿µã®å å€ã®ããžãã¹ããžãã¯ã®å€ã§ã¯ãéåæ解決ã¯ãéåæãªã©ã®ä»ã®ã©ã€ãã©ãªãåŠçã«ã¯ããã«é©ããŠããããããŠãŒãã£ãªãã£ã®åäœã§ãã
ã³ã¡ã³ããããã®ã§ããã DBã®äŸã§ã¯ãŠã£ã³ããŠã衚瀺ãããªããªããŸãããããã¯ãã¥ãŒããŒã·ã§ã³ãã³ãã¬ãŒãã«éåžžã«åœ¹ç«ã€å¯èœæ§ããããŸãã ããšãã°ãå éšã«ããµããã¥ãŒãããããä»ã®ããã€ãã®ãã³ãã¬ãŒãã«åå²ããããªããã³ãã¬ãŒãã ãã¥ãŒå šäœãåæç»ããïŒã¡ãã€ãå¹æïŒããã³ã³ãããŒã©ãŒã«ããããã¹ãŠã®ããããã¥ãŒãã®ãã¹ãŠãæ§ç¯ããã代ããã«ããã¥ãŒã®äžéšãæŽæ°ãããã®ããã®åçŽãªããžãã¯ãçšæãããã ãã§ãã
ã©ãæããŸããïŒ
@tomasdevã€ãŸã:)
ãã®æ©èœã¯ã httpsïŒ//github.com/barc/express-hbsã䜿çšãããšãExpressã®ããŒãã§å©çšã§ããããã«ãªããŸãã ãã ããéåæããŒãžã§ã³ã®ãã«ããŒã¯ãéšååŒããã®ä»ã®ããã€ãã®ãšããžã±ãŒã¹ã§ããŸãæ©èœããŸããã
ãã®æ©èœããã³ãã«ããŒã«å«ããããã«åæ€èšããããå°ãªããšããã³ãã«ããŒã³ã¢ããã®çš®ã®æ¡åŒµãããé©åã«ãµããŒãã§ãããã©ãããæ€èšããŠãã ããã
ãã¥ãŒã¬ã€ã€ãŒã¯ã«ã¹ã¿ãã€ãºå¯èœã§ãããããGhostã¯éåæãã«ããŒã®æ確ã§æå¹ãªïŒããããçããïŒãŠãŒã¹ã±ãŒã¹ã瀺ããŠãããšæããŸãã
ããã³ããšã³ãã§ã¯ãGhostã®ãã¹ãŠã®ãã³ãã¬ãŒããããŒãã«ãã£ãŠæäŸãããŸãã ããŒãã¯ããã³ãã«ããŒãCSSãã¯ã©ã€ã¢ã³ãJSã®éåžžã«èãã¬ã€ã€ãŒã§ãããã¢ã¯ã»ã¹ã§ããããŒã¿ã¯ãäºåã«æäŸããããŒã¿ã®ã¿ã§ãã ã³ã³ãããŒã©ãåäœå€æŽããžãã¯ã«ã¢ã¯ã»ã¹ããããšã¯ã§ããŸããã ããã¯éåžžã«æ éã§ãã
ããŒãAPIãæ¡åŒµããããã«ãããŒããå©çšãããè¿œå ã®ããŒã¿ã³ã¬ã¯ã·ã§ã³ãå®çŸ©ãããã«ããŒã®è¿œå ãéå§ããããšæããŸãã ããšãã°ã次ã®ãããªãã®ã§ãã
{{#fetch tags}}
.. do something with the list of tags..
{{else}}
No tags available
{{/fetch}}
Ghostã«ã¯ãå éšãšå€éšã®äž¡æ¹ã§å©çšã§ããJSONAPIããããŸãã ãããã£ãŠããã®ãã§ããã¯ãšãªã¯ãã©ãŠãºã¿ã°é¢æ°ã«ããããããŸãã ãã¹ãŠã®ãšã³ããã€ã³ãã«å¯ŸããŠajax / httpã䜿çšããå¿ èŠã¯ãããŸããã代ããã«ãéåæãã«ããŒãAPIãããã®ããŒã¿ãå éšçã«ãã§ããããéåžžã©ããç¶è¡ã§ããŸãã
ãããäžè¬çãªãŠãŒã¹ã±ãŒã¹ã§ãããšã¯äž»åŒµããŸãããæšæºã®MVCã¢ãã«ã«éåããããšã¯èªããŸãããæå¹ã§æçšã§ãããšæããŸãã
@ErisDSçŽ æŽããããã¥ãŒã¹ã§ãïŒ ãããŠç§ããã®å ±éã®åé¡ã«ã€ããŠã¯è°è«ããŸããããããã¯åœ¹ã«ç«ã¡ãŸãã
ãã®å ŽåãçŸåšéåæãã«ããŒã䜿çšããŠããæäœã®å€ãã¯å éšã§åæãããŠããŸããããããã¯çŽæãšããŠæ§é åãããŠããããšã«æ³šæããŠãã ããã
詳现ãªäŸãããããš...
Ghostã®ãã¹ãŠã®ããŒã¿ã¯ãå éšAPIãä»ããŠã¢ã¯ã»ã¹ãããŸãã ããã«ã¯ãèšå®ãªã©ã®ã°ããŒãã«æ å ±ãå«ãŸããŸãã èšå®APIãžã®ãªã¯ãšã¹ãã¯ãããŒã¿ããŒã¹ã«ã¢ã¯ã»ã¹ããåã«ãäºåã«å ¥åãããã¡ã¢ãªå ãã£ãã·ã¥ã«ã¢ã¯ã»ã¹ãããããå®éã«ã¯å€æ°ãè¿ãã ãã§ããããããçŽæãšããŠæ§æããããšã§ãå¿ èŠã«å¿ããŠããŒã¿ããŒã¹ã«ç°¡åã«ã¢ã¯ã»ã¹ã§ããŸãã
ãŸãããã¹ãŠã®äžè²«æ§ã確ä¿ãããŸããããã§ãªãå Žåãèšå®APIã¯åæãããä»ã®ãã¹ãŠã®å éšããŒã¿èŠæ±ã¯éåæã«ãªããŸããããã¯æå³ããããŸããã
çŽæãæã£ãŠãã¹ãŠãæ§ç¯ããããšã¯ãæåã¯ããªãæ··ä¹±ããå¯èœæ§ãããããšãç§ã¯ç¥ã£ãŠããŸãããããã¯ãäžåºŠãããæã«å ¥ããªããã°ãããªããã©ã®ããã«çããããç解ã§ããªãããšã®1ã€ã§ãã ES6ã§ãžã§ãã¬ãŒã¿ãŒãç»å Žãããšãé¢æ°ã®éåæ解決ã®ãµããŒããJavaScriptã«çµã¿èŸŒãŸããŸã-ãããŠãã®åæ§ã®åé¡ïŒ https ïŒ//github.com/wycats/handlebars.js/issues/141ã¯ããã³ãã«ããŒãäœæãããšãããšè¿°ã¹ãŠããŸãæ©çãŸãã§äœæ¥ããŸãã
HTMLbarsã®ä»åŸã®ãªãªãŒã¹ãããã«ã©ã®ããã«åœ±é¿ãããã¯ããããŸããããå°ãªããšããããªãè°è«ãå¿ èŠã ãšæããŸãã
acl解決ã®ãã«ããŒãäœæããããšããŠãããšãã«ãå¥ã®ãŠãŒã¹ã±ãŒã¹ã«ééããŸããã ããã¯ç§ã®ãã³ãã¬ãŒãã«ããŸãé©åããŸãïŒ
{{#allowedTo 'edit' '/config'}}
<li>
<a href="/config">Config</a>
</li>
{{/allowedTo}}
ãã ããnode-aclã®å®éã®isAllowedã¡ãœããã¯éåæã§ãïŒããšãã°ãããŒã¿ããŒã¹ããã¯ãšã³ããèš±å¯ããŸãïŒã
åé¿çã¯ããã¹ãŠã®ãŠãŒã¶ãŒæš©éãäºåã«ååŸããããšã§ãïŒ allowedPermissions ïŒããããã¯ã¡ãã£ãšãããã§ã
@kpdeckerãããã®ãŠãŒã¹ã±ãŒã¹ã«ã€ããŠããã«èããŸããïŒ
@ErisDSç§ã¯ããã§ã®æ¬²æ±ãç解ããŠããŸããããããã³ãŒã«ããã¯ãŸãã¯çŽæã®åœ¢åŒã§èšèªã«ãªãããšã¯ãªãã ãããšåŒ·ãçã£ãŠããŸãã ããã¯ãAPIã®èŠ³ç¹ãããããã«è¡ãã®ã¯éåžžã«å°é£ã§ãããããããµããŒãããããã«ãã³ãã¬ãŒããšã³ãžã³ã®å€§éšåãå¹æçã«æžãçŽãå¿ èŠããããŸãã äžæµã®ã¢ãã«/ããŒã¿ãœãŒã¹ãã¬ã³ããªã³ã°ãµã€ã¯ã«ã«å ¥ãåã«ãããããã¹ãŠãåŠçããããšããå§ãããŸãã
æ©çãŸãã®ã¢ã€ãã¢ã¯èå³æ·±ããã®ã§ããã誰ããããã§å¿ èŠãªãã®ã調ã¹ãããšæã£ãããããã¯çŽ æŽãããç 究ãããžã§ã¯ãã«ãªããŸãããããã«å¯Ÿãããã©ãŠã¶ã®ãµããŒãã¯ç§ã«ã¯éåžžã«é ãããã§ãæ£çŽèšã£ãŠç§ã¯æ··ä¹±ããŠããŸããç§ã®ãããžã§ã¯ãã®ããããã«ãŸã ãããã®æ©èœã®ããããã
ããªããèæ ®ããããšæããããããªãã¡ããã©ç§ã®ã2ãïŒãŸããã«ããã«ïŒã»ã³ãïŒ
ãããšäŸ¿å©ãªãããè¯ãäŸãæäŸã§ãããããããŸããã
ç§ãã¡ã¯ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³åãã«cordovaãšå€ãã®é£æºãè¡ã£ãŠãããå€ãã®èšèªã«ããŒã«ã©ã€ãºããå¿
èŠããããŸãã Cordovaã¯ãæ¥ä»ãæ°å€ãé貚ãªã©ã®ãã©ãŒããããæ¯æŽããé¢æ°ãæäŸããŸãã
åé¡ã¯ãããããã¹ãŠãéåæã³ãŒã«ããã¯ãå¿
èŠãšããããšã§ãã
äŸïŒ
Handlebars.registerHelper('stringToNumber', function(string, type)
{
type = type || 'decimal';
navigator.globalization.stringToNumber(string, function(number)
{
return number;
}, function()
{
return NaN;
}, {
type: type
});
});
ããã¯ãimoãããã°çŽ æŽãããã§ãããã
npmã§handlebars -asyncããã±ãŒãžãèŠã€ããŸããã ããããããã¯å°ãå€ããçŸåšã®ãã³ãã«ããŒããŒãžã§ã³ã§åäœãããã©ããã¯ããããŸããã
ç§ãçŽæã®ããã«äŒŒããããªãã®ãæžãããšããã§ãã ããã±ãŒãžpromised-handlebarsã䜿çšãããšããã«ããŒå ããPromiseãè¿ãããšãã§ããŸãã ãããžã§ã¯ãã®1ã€ã§äœ¿çšããäºå®ã§ããããããŸã§ã®ãšãããå®çšŒåç°å¢ã§ã¯äœ¿çšãããŠããŸããã ããããããã€ãã®ãšããžã±ãŒã¹ïŒéåæãããã¯ãã«ããŒå ããéåæãã«ããŒãåŒã³åºããªã©ïŒã®åäœãã¹ããããããããã¯ãã¹ãŠç·è²ã§ã...
@nknappçŽ æŽãããã§ããïŒ express-hbsã¯éåæããµããŒãããŠãããéåæã¯ãããã¯ãã«ããŒã«å¯ŸããŠæ©èœããŸãããéåæãã«ããŒã®ãã¹ãã¯æ©èœããŸããããããã£ãŠããããæ©èœããããšãéåžžã«èå³ããããŸããã€ãŸããexpress-hbsïŒ+1ïŒã«ã¯ãŸã åžæããããŸãã
@ErisDS ãããã«æçš¿ããã¹ãã ãšæããŸããã express-hbs
ãéåæãã«ããŒããã¹ãã§ããªãããšã«æ°ã¥ããŸããã§ããã ç§ã®äž»ãªçŠç¹ã¯express
ã§ã¯ãªããçŸåšåãçµãã§ããREADMEãžã§ãã¬ãŒã¿ãŒã§ãã ä»ã®äººã«è©ŠããŠããããããšæããŸãïŒçŽæããããã³ãã«ããŒïŒãã£ãŒãããã¯ããã ããã
æå¹ãªãŠãŒã¹ã±ãŒã¹ã«è¿œå ããããã«ãçŸåšã®ãã±ãŒã«ã«åºã¥ããŠå€æDBããå€ããã§ããããå¿ èŠãããå Žåã¯ã©ããªããŸããïŒ
<div class="howItWorks">
{{{i18nFetch id=how-it-works locale=locale}}}
</div>
ããã«ã次ã®ãããªåçIDã䜿çšããŠDBãšã³ããªããCMSãããã¯ãè¿œå ããã®ã¯ã©ãã§ããããã
<div class="searchCms">
{{{cmsLoader 'search-{$term}' term=params.input defaultId='search-default'}}}
</div>
ããã¯ããµãŒããŒåŽã®ã¬ã³ããªã³ã°ïŒã€ãŸãã express-handlebarsã䜿çšããïŒã«ç¹ã«åœ¹ç«ã¡ãŸãã
å¥ã®ãŠãŒã¹ã±ãŒã¹ã次ã«ç€ºããŸããå€éšã¹ããŒãå®çŸ©ãå¯èœã«ããSwaggerïŒ simple-swagger ïŒã®ããã¥ã¡ã³ããžã§ãã¬ãŒã¿ãŒãäœæããŠããŸãã ã¹ããŒããå€éšã§å®çŸ©ãããŠããããšãèªèãããã®ã¹ããŒããååšããæäŸãããURLã«ç§»åããŠååŸãããã®ããŒã¿ã䜿çšããŠãã³ãã«ããŒãã³ãã¬ãŒãã®ãã®éšåãã¬ã³ããªã³ã°ãããã³ãã«ããŒãã«ããŒãäœæããããšæããŸãã Handlebarsã®ã³ã³ãã€ã«ã¡ãœãããåŒã³åºãåã«ãã®ããŒã¿ãååŸããå¿ èŠãããå Žåãæ§é ãäºåã«ããããªãJSONããã¥ã¡ã³ããååž°çã«ç¹°ãè¿ããå€éšã¹ããŒãã®ãã¹ãŠã®ã€ã³ã¹ã¿ã³ã¹ãèŠã€ããŠååŸããããããã«æ¿å ¥ããå¿ èŠããããŸãã JSONã
åºæ¬çã«ãJSONã¹ããŒãããŒã¿ïŒ json-schema.org ïŒãã¬ã³ããªã³ã°ããããã«Handlebarsãã³ãã¬ãŒãã䜿çšãããå Žåã¯åžžã«ãéåæã¬ã³ããªã³ã°ã¡ãœããã圹ç«ã¡ãŸããJSONã¹ããŒãã§ã¯åžžã«ã¹ããŒãã®ãµãããŒããå€éšã§å®çŸ©ã§ããããã§ãã
@dwhiebã¯ãããã¥ã¡ã³ããžã§ãã¬ãŒã¿ã®bootprint - swaggerãèŠãããšããããŸããïŒ ããã¯ã»ãšãã©ããªãã説æããŠããããšã§ãïŒå€éšã¹ããŒãããŸã å®è£ ãããŠããªãããšãé€ããŠãããã¯çŽ æŽãããæ©èœã«ãªãã§ãããïŒã ãã£ãŒãããã¯ãããã°ãããã§åé¡ãéããŠãã ããã
ãããŠã promised-handlebarsã¯éåæãã«ããŒã§éåžžã«ããŸãæ©èœãããšæããŸãã
ãã«ããŒã§promiseã䜿çšã§ãããšäŸ¿å©ãªãŠãŒã¹ã±ãŒã¹ããããŸãã ããã°ã®HTMLãçæããããã«ãã³ãã«ããŒã䜿çšããŠããŸãã åèšäºã®æå¹ãªæ§é åããŒã¿ãäœæããã«ã¯ãèšäºã®ç»åã«äœ¿çšããŠãããã£ã¡ã³ã·ã§ã³ãååŸããå¿ èŠããããŸãã ä»ãç§ã¯ãã®ããã«ãã£ãŠããŸãïŒ
{{#imageSize post.frontMatter.previewImage}}
<div itemprop="image" itemscope itemtype="https://schema.org/ImageObject">
<meta itemprop="url" content="{{#staticResource ../post.frontMatter.previewImage}}{{/staticResource}}">
<meta itemprop="width" content="{{width}}">
<meta itemprop="height" content="{{height}}">
</div>
{{/imageSize}}
imageSize
ãã«ããŒã¯ãã¡ã€ã«ãåæçã«èªã¿åãããæ©èœããŸãããçæ³çã«ã¯éåæã§èªã¿åãããšãã§ãããããI / Oã«ãã£ãŠããŒãžã®ã¬ã³ããªã³ã°ãé
ããªãããšã¯ãããŸããã ãŸãããã¡ã€ã«ã·ã¹ãã ã§ã¯ãªããURLã®ç»åã«å¯ŸããŠãããè¡ãããšã¯äžå¯èœã§ãã
promised-handlebarsãšexpress-hbsã®äœ¿çšã«ã€ããŠæ€èšããŸããããã«ããŒé¢æ°ã§promiseã䜿çšã§ããããšã¯ãHandlebarsãžã®çŽ æŽãããè¿œå ã«ãªããšæããŸãã
FWIWãç§ã¯Hyperscriptã hyperscript-helpers
ãES7ã®async/await
ã䜿çšããŠå€ãã®éåæHTMLã¬ã³ããªã³ã°ãè¡ã£ãŠããŸããããããã¯æ¬åœã«å¬ããããšã§ãã ããããã¡ããããã®ãœãªã¥ãŒã·ã§ã³ã¯HTMLã«å¯ŸããŠã®ã¿æ©èœããŸãã ãã³ãã«ããŒã䜿çšããéåæãœãªã¥ãŒã·ã§ã³ã§ã¯ãä»ã®çš®é¡ã®ãã¡ã€ã«ãéåæã§çæã§ããŸã...ãã ããHTMLã®å Žåãç§ã¯æ±ºããŠæ¯ãè¿ããªããšæããŸãã
express-hbsãè©ŠããŠã¿ãã€ããã§ããã2018幎ã«ã¯ãµããŒãããªãã®ã¯å¥åŠãªããšã ãšæããŸãã éåæã®ãã®ã¯ãã¥ãŒã®äžéšãšããŠã§ã¯ãªããã³ã³ãããŒã©ãŒãšåŒã°ããéæ³ã®ãããªãã®ã§è¡ãããã¹ãã§ãããšããçŽç²ãªèŠæ¹ãããããšãç§ã¯ç¥ã£ãŠããŸãïŒMVCãã©ããããããééããªããæ£ããããã®ããã«ïŒ-ããããããã¯2ã€ã®ããŒã«ã€ããŠã¯å°ãè¿èŠçŒçã§ãçç±
aïŒå€éšã©ã€ãã©ãª-ã»ãšãã©ã®äººã¯ä»ãå®å šã«async / awaitã§æžããŠããŸã-ç§ã®ã³ãŒãã§ã¯ã10åã®é¢æ°ã®ãã¡9å以äžãéåæã§ãããšæããŸã...å Žåã«ãã£ãŠã¯ã念ã®ãããã§ãã éåææ©èœããµããŒãããŠããªããšããããšã¯ããã¹ãŠã®éåæã©ã€ãã©ãªãçªç¶å®å šã«ã¢ã¯ã»ã¹ã§ããªããªãããšãæå³ããŸã
bïŒæ±çšã³ã³ãããŒã©ãŒæ©èœã ç§ã¯ãã®ãããªãã®ã䞻匵ããŸãïŒ
{{#query "select name, total from summary"}}
<tr><td>{{this.name}}</td><td>{{this.total}}</td></tr>
{{/query}}
ã¯ãå€æ°ã«è²Œãä»ããŠãã³ãã¬ãŒãã«æž¡ãç¹æ³šã®ã³ã³ãããŒã©ãŒæ©èœãåããŠããå Žåãšæ¯èŒããŠãçããã¯ãªãŒã³ã§ãä¿å®ã容æã§ãåºæ¬çã«èãããããã¹ãŠã®ç¹ã§åªããŠããŸãããã³ãã¬ãŒãã¯ããã®é¢æ°ãèªèããŠã¢ã¯ã»ã¹ããå¿ èŠããããŸãã
æãåèã«ãªãã³ã¡ã³ã
express-hbsãè©ŠããŠã¿ãã€ããã§ããã2018幎ã«ã¯ãµããŒãããªãã®ã¯å¥åŠãªããšã ãšæããŸãã éåæã®ãã®ã¯ãã¥ãŒã®äžéšãšããŠã§ã¯ãªããã³ã³ãããŒã©ãŒãšåŒã°ããéæ³ã®ãããªãã®ã§è¡ãããã¹ãã§ãããšããçŽç²ãªèŠæ¹ãããããšãç§ã¯ç¥ã£ãŠããŸãïŒMVCãã©ããããããééããªããæ£ããããã®ããã«ïŒ-ããããããã¯2ã€ã®ããŒã«ã€ããŠã¯å°ãè¿èŠçŒçã§ãçç±
aïŒå€éšã©ã€ãã©ãª-ã»ãšãã©ã®äººã¯ä»ãå®å šã«async / awaitã§æžããŠããŸã-ç§ã®ã³ãŒãã§ã¯ã10åã®é¢æ°ã®ãã¡9å以äžãéåæã§ãããšæããŸã...å Žåã«ãã£ãŠã¯ã念ã®ãããã§ãã éåææ©èœããµããŒãããŠããªããšããããšã¯ããã¹ãŠã®éåæã©ã€ãã©ãªãçªç¶å®å šã«ã¢ã¯ã»ã¹ã§ããªããªãããšãæå³ããŸã
bïŒæ±çšã³ã³ãããŒã©ãŒæ©èœã ç§ã¯ãã®ãããªãã®ã䞻匵ããŸãïŒ
ã¯ãå€æ°ã«è²Œãä»ããŠãã³ãã¬ãŒãã«æž¡ãç¹æ³šã®ã³ã³ãããŒã©ãŒæ©èœãåããŠããå Žåãšæ¯èŒããŠãçããã¯ãªãŒã³ã§ãä¿å®ã容æã§ãåºæ¬çã«èãããããã¹ãŠã®ç¹ã§åªããŠããŸãããã³ãã¬ãŒãã¯ããã®é¢æ°ãèªèããŠã¢ã¯ã»ã¹ããå¿ èŠããããŸãã