2024年10月js格式化输出工具(nodeJs初学--Nodejs中的querystring(查询字符串)模块)

 更新时间:2024-10-12

  ⑴js格式化输出工具(nodeJs初学--Nodejs中的querystring(查询字符串模块

  ⑵nodeJs初学--Nodejs中的querystring(查询字符串模块

  ⑶querystring?模块提供用于解析和格式化URL查询字符串的实用工具????直接在nodeJs环境中引入:???const?querystring=require(’querystring’);??.------基础:parse?字符串转对象???默认是以&?=?分割键值对???????例如字符串?letstring=’name=chencheng&posswer=&sex=’;???????letobj=qs.parse(string);???????输出对象如图??.------拓展如果不是分割键值对的不是??&?=?是其他的符号。例如字符串?以#-分割键值对的话?letstring=’name#chencheng-posswer#-sex#’;?letobj=qs.parse(string,’-’,’#’);???????????????????????????第一个参数字符串???????????????????????????第二个参数分割键值对????????????????????????????第三个参数分割键值????????.------基础:stringify?对象转字符串??例如:letobj={name:’’,age:’’,sex:’’}??letstring=qs.stringify(obj);????默认以&=拼接???输出:’name=&age=&sex=’;????.?------拓展:stringify?不以默认分隔符分割???letstring=qs.stringify(obj,’^’,’?’);??输出:??’name?^age?^sex?’;

  ⑷如何配置CKEditor的config

  ⑸使用方法:、在页面《head》中引入ckeditor核心文件ckeditor.js《scripttype=“text/javascript“src=在使用器的地方插入HTML控件《textarea》《textareaid=“TextArea“cols=““rows=““class=“ckeditor“》《/textarea》如果是ASP.环境,也可用服务器端控件《TextBox》《asp:TextBoxID=“tbContent“runat=“server“TextMode=“MultiLine“class=“ckeditor“》《/asp:TextBox》注意在控件中加上class=“ckeditor“。、将相应的控件替换成器代码《scripttype=“text/javascript“》CKEDITOR.replace(’TextArea’);//如果是在ASP.环境下用的服务器端控件《TextBox》CKEDITOR.replace(’tbContent’);//如果《TextBox》控件在母版页中,要这样写CKEDITOR.replace(’《%=tbContent.ClientID.Replace(“_“,“$“)%》’);《/script》、配置器ckeditor的配置都集中在ckeditor/config.js文件中,下面是一些常用的配置参数:复制代码代码如下://界面语言,默认为’en’config.language=’zh-’;//设置宽高config.width=;config.height=;//器样式,有三种:’kama’(默认、’office’、’v’config.skin=’v’;//背景颜色config.uiColor=’#FFF’;//工具栏(基础’Basic’、全能’Full’、自定义plugins/toolbar/plugin.jsconfig.toolbar=’Basic’;config.toolbar=’Full’;这将配合:config.toolbar_Full=[,,,,’/’,,,,,,’/’,,];//工具栏是否可以被收缩config.toolbarCanCollapse=true;//工具栏的位置config.toolbarLocation=’top’;//可选:bottom//工具栏默认是否展开config.toolbarStartupExpanded=true;//取消“拖拽以改变尺寸”功能plugins/resize/plugin.jsconfig.resize_enabled=false;//改变大小的最大高度config.resize_maxHeight=;//改变大小的最大宽度config.resize_maxWidth=;//改变大小的最小高度config.resize_minHeight=;php程序员之家//改变大小的最小宽度config.resize_minWidth=;//当提交包含有此器的表单时,是否自动更新元素内的数据config.autoUpdateElement=true;//设置是使用绝对目录还是相对目录,为空为相对目录config.baseHref=’’//器的z-index值config.baseFloatZIndex=;//设置快捷键config.keystrokes=[,//获取焦点,//元素焦点,//文本菜单,//撤销,//重做,//,//链接,//粗体,//斜体,//下划线]//设置快捷键可能与浏览器快捷键冲突plugins/keystrokes/plugin.js.config.blockedKeystrokes=[CKEDITOR.CTRL+/*B*/,CKEDITOR.CTRL+/*I*/,CKEDITOR.CTRL+/*U*/]//设置内元素的背景色的取值plugins/colorbutton/plugin.js.config.colorButton_backStyle={element:’span’,styles:{’background-color’:’#(color)’}}//设置前景色的取值plugins/colorbutton/plugin.jsconfig.colorButton_colors=’,,B,FFF,,,B,,B,AAA,DAA,,ED,CD,,,F,FFC,FFD,,FF,F,EEEE,AAA,FFAA,FFA,FFFF,FF,AFEEEE,ADDE,DDADD,DDD,FFFF,FAEBD,FFFFE,FFFF,FFFFF,FFFF,EEFA,FFF’//是否在选择颜色时显示“其它颜色”选项plugins/colorbutton/plugin.jsconfig.colorButton_enableMore=falsephp程序员之家//区块的前景色默认值设置plugins/colorbutton/plugin.jsconfig.colorButton_foreStyle={element:’span’,styles:{’color’:’#(color)’}};//所需要添加的CSS文件在此添加可使用相对路径和网站的绝对路径config.contentsCss=’文字方向config.contentsLangDirection=’rtl’;//从左到右//CKeditor的配置文件若不想配置留空即可CKEDITOR.replace(’myfiled’,{customConfig:’);//界面框的背景色plugins/dialog/plugin.jsconfig.dialog_backgroundCoverColor=’rgb(,,)’;//可设置参考config.dialog_backgroundCoverColor=’white’//默认//背景的不透明度数值应该在:.~.之间plugins/dialog/plugin.jsconfig.dialog_backgroundCoverOpacity=.//移动或者改变元素时边框的吸附距离单位:像素plugins/dialog/plugin.jsconfig.dialog_magDistance=;//是否拒绝本地拼写检查和提示默认为拒绝目前仅firefox和safari支持plugins/wysiwygarea/plugin.js.config.disableNativeSpellChecker=true//进行表格功能如:添加行或列目前仅firefox支持plugins/wysiwygarea/plugin.jsconfig.disableNativeTableHandles=true;//默认为不开启//是否开启图片和表格的改变大小的功能config.disableObjectResizing=true;config.disableObjectResizing=false//默认为开启//设置HTML文档类型config.docType=’《!DOCTYPEhtmlPUBLIC“-//WC//DTDXHTML.Transitional//EN““//是否转换一些特殊字符为ASCII字符如“ThisisChinese:汉语.“转换为“ThisisChinese:汉语.“plugins/entities/plugin.jsconfig.entities_processNumerical=false;//添加新组件config.extraPlugins=’myplugin’;//非默认仅示例//使用搜索时的高亮色plugins/find/plugin.jsconfig.find_highlight={element:’span’,styles:{’background-color’:’#ff’,’color’:’#f’}};//默认的字体名plugins/font/plugin.jsconfig.font_defaultLabel=’Arial’;//字体时的字符集可以添加常用的中文字符:宋体、楷体、黑体等plugins/font/plugin.jsconfig.font_names=’Arial;TimesNewRoman;Verdana’;//文字的默认式样plugins/font/plugin.jsconfig.font_style={element:’span’,styles:{’font-family’:’#(family)’},overrides:};//字体默认大小plugins/font/plugin.jsconfig.fontSize_defaultLabel=’px’;//字体时可选的字体大小plugins/font/plugin.jsconfig.fontSize_sizes=’/px;/px;/px;/px;/px;/px;/px;/px;/px;/px;/px;/px;/px;/px;/px;/px’//设置字体大小时使用的式样plugins/font/plugin.jsconfig.fontSize_style={element:’span’,styles:{’font-size’:’#(size)’},overrides:};//是否强制复制来的内容去除格式plugins/pastetext/plugin.jsconfig.forcePasteAsPlainText=false//不去除//是否强制用“&”来代替“&”plugins/htmldataprocessor/plugin.jsconfig.forceSimpleAmpersand=false;//对address标签进行格式化plugins/format/plugin.jsconfig.format_address={element:’address’,attributes:{class:’styledAddress’}};//对DIV标签自动进行格式化plugins/format/plugin.jsconfig.format_div={element:’div’,attributes:{class:’normalDiv’}};//对H标签自动进行格式化plugins/format/plugin.jsconfig.format_h={element:’h’,attributes:{class:’contentTitle’}};//对H标签自动进行格式化plugins/format/plugin.jsconfig.format_h={element:’h’,attributes:{class:’contentTitle’}};//对H标签自动进行格式化plugins/format/plugin.jsconfig.format_h={element:’h’,attributes:{class:’contentTitle’}};php程序员之家//对H标签自动进行格式化plugins/format/plugin.jsconfig.format_h={element:’h’,attributes:{class:’contentTitle’}};//对H标签自动进行格式化plugins/format/plugin.jsconfig.format_h={element:’h’,attributes:{class:’contentTitle’}};//对H标签自动进行格式化plugins/format/plugin.jsconfig.format_h={element:’h’,attributes:{class:’contentTitle’}};//对P标签自动进行格式化plugins/format/plugin.jsconfig.format_p={element:’p’,attributes:{class:’normalPara’}};php程序员之家//对PRE标签自动进行格式化plugins/format/plugin.jsconfig.format_pre={element:’pre’,attributes:{class:’code’}};//用分号分隔的标签名字在工具栏上显示plugins/format/plugin.jsconfig.format_tags=’p;h;h;h;h;h;h;pre;address;div’;//是否使用完整的html模式如使用,其源码将包含:《html》《body》《/body》《/html》等标签config.fullPage=false;//是否忽略段落中的空字符若不忽略则字符将以“”表示plugins/wysiwygarea/plugin.jsconfig.ignoreEmptyParagraph=true;//在清除图片属性框中的链接属性时是否同时清除两边的《a》标签plugins/image/plugin.jsconfig.image_removeLinkByEmptyURL=true;//一组用逗号分隔的标签名称,显示在左下角的层次嵌套中plugins/menu/plugin.js.config.menu_groups=’clipboard,form,tablecell,tablecellproperties,tablerow,tablecolumn,table,anchor,link,image,flash,checkbox,radio,textfield,hiddenfield,imagebutton,button,select,textarea’;//显示子菜单时的延迟,单位:msplugins/menu/plugin.jsconfig.menu_subMenuDelay=;//当执行“新建”命令时,器中的内容plugins/newpage/plugin.jsconfig.newpage_html=’’;//当从word里复制文字进来时,是否进行文字的格式化去除plugins/pastefromword/plugin.jsconfig.pasteFromWordIgnoreFontFace=true;//默认为忽略格式//是否使用《h》《h》等标签修饰或者代替从word文档中粘贴过来的内容plugins/pastefromword/plugin.jsconfig.pasteFromWordKeepsStructure=false;//从word中粘贴内容时是否移除格式plugins/pastefromword/plugin.jsconfig.pasteFromWordRemoveStyle=false;//对应后台语言的类型来对输出的HTML内容进行格式化,默认为空config.protectedSource.push(/《?*??》/g);//PHPCodeconfig.protectedSource.push(//g);//ASPCodeconfig.protectedSource.push(/(]+》+/》)/gi);//ASP.Code//当输入:shift+Enter时插入的标签config.shiftEnterMode=CKEDITOR.ENTER_P;//可选:CKEDITOR.ENTER_BR或CKEDITOR.ENTER_DIV//可选的表情替代字符plugins/smiley/plugin.js.config.smiley_descriptions=[’:)’,’:(’,’;)’,’:D’,’:/’,’:P’,’’,’’,’’,’’,’’,’’,’’,’;(’,’’,’’,’’,’’,’’,’:kiss’,’’];//对应的表情图片plugins/smiley/plugin.jsconfig.smiley_images=[’regular_smile.gif’,’sad_smile.gif’,’wink_smile.gif’,’teeth_smile.gif’,’confused_smile.gif’,’tounge_smile.gif’,’embaressed_smile.gif’,’omg_smile.gif’,’whatchutalkingabout_smile.gif’,’angry_smile.gif’,’angel_smile.gif’,’shades_smile.gif’,’devil_smile.gif’,’cry_smile.gif’,’lightbulb.gif’,’thumbs_down.gif’,’thumbs_up.gif’,’heart.gif’,’broken_heart.gif’,’kiss.gif’,’envelope.gif’];//表情的地址plugins/smiley/plugin.jsconfig.smiley_path=’plugins/smiley/images/’;

  ⑹一个简单到问题,nodejs到时间怎么格式化

  ⑺项目中需要使用js格式化输出时间,发现js中并没有现成的类似PHP中date(的函数。于是用js模拟一个方便以后使用,代码如下:格式化时间参数:formatStr格式化串y年,m月,d日,h小时,i分钟,s秒钟缺省值“y-m-dh:i:s“fdate要格式化的时间(时间戳UTC秒数缺省值当前时间实例:formatDate()当前时间默认格式如--::formatDate(’y/m/d’,)某时间格式为年月日如//functionformatDate(formatStr,fdate){varfTime,fStr=’ymdhis’;if(!formatStr)formatStr=“y-m-dh:i:s“;if(fdate)fTime=newDate(fdate);elsefTime=newDate();varformatArr=[fTime.getFullYear().toString(),(fTime.getMonth()+).toString(),fTime.getDate().toString(),fTime.getHours().toString(),fTime.getMinutes().toString(),fTime.getSeconds().toString()]for(vari=;i《formatArr.length;i++){formatStr=formatStr.replace(fStr.charAt(i),formatArr);}returnformatStr;}

  ⑻JSON.stringify()是将JavaScript对象转换为JSON的规范方法。有许多JavaScript框架在内部都使用了JSON.stringify(),比如Express框架的res.json()和Axiosbody序列化。

  ⑼但是,默认情况下,JSON.stringify()输出的JSON格式,不带空格或颜色。在后面,我们将使用一个常用的npm包来丰富输出数据的色彩。

  ⑽JSON.stringify()基本用法如下:

  ⑾可以看到,我们使用JSON.stringify()输出的内容更具可读性。

  ⑿你也可以传入一个“ “制表符间距,格式化输出的数据。

  ⒀JSON.stringify的第三个参数用于控制间距。正是它提供了漂亮的字符串输出。

  ⒁它允许两种类型的参数:Number和String。

  ⒂如果Space是一个Number类型,则表示JSON.stringify将在每个键之前放置的相应的空格数。可以使用到之间的任意数字作为缩进。

  ⒃或者,可以使用字符串作为缩进。最多允许个字符。如果您尝试传递超过个字符,它将只使用前个字符。

  ⒄对于不直接调用JSON.stringify()的框架,通常有一个设置spaces参数的选项。例如,Express有一个全局’jsonspaces’选项,允许您为所有res.json()调用设置spaces。

  ⒅Axios没有设置JSON格式的显式选项,但您可以使用transformRequest选项自行处理JSON序列化。关键语法如下:

  ⒆Prettyjson以YAML样式格式化JSON数据。Prettyjson仅在CLI上工作,如果将Prettyjson输出作为HTTP响应发送,则无法获得颜色。

  ⒇下面是使用Prettyjson从Node.js打印JSON的示例:

  ⒈您应该使用以上这类方法来使你想要突出显示的数据以提高可读性。

  ⒉这里我们额外在说一下JSON.stringify的第二个参数replacer,我们可以使用它来转换结果。

  ⒊它允许两种类型的参数:Array和Function。

  ⒋我们为每一项调用一次function,你也可以循环每一项,并在每次传递时使用函数中定义的逻辑进行操作。

  ⒌下面是一个示例,我跳过了值不是字符串的属性。换句话说,我只想显示值为数字的项。

  ⒍JS如何处理后台获取的Timestamp

  ⒎在后台把timestamp转化为String:SimpleDateFormatdf=newSimpleDateFormat(“yyyy-MM-ddHH:mm:ss“);//定义格式,不显示毫秒Timestampnow=newTimestamp(System.currentTimeMillis());//获取系统当前时间Stringstr=df.format(now);然后再传回前台js接收

  ⒏js中要怎么格式化一个时间

  ⒐framework怎样结合requirejs

  ⒑目前来看,JS框架以及一些开发包和库类有如下几个,Dojo、Scriptaculous、Prototype、yui-ext、Jquery、Mochikit、mootools、moo.fxDojo(JSlibraryandUIponent:Dojo是目前最为强大的js框架,它在自己的Wiki上给自己下了一个定义,dojo是一个用JavaScript编写的开源的DHTML工具箱。dojo很想做一个“大一统”的工具箱,不仅仅是浏览器层面的,野心还是很大的。Dojo包括ajax,browser,event,widget等跨浏览器API,包括了JS本身的语言扩展,以及各个方面的工具类库,和比较完善的UI组件库,也被广泛应用在很多项目中,他的UI组件的特点是通过给html标签增加tag的方式进行扩展,而不是通过写JS来生成,dojo的API模仿Java类库的组织方式。用dojo写WebOS可谓非常方便。dojo现在已经.了,dojo强大的地方在于界面和特效的封装,可以让开发者快速构建一些兼容标准的界面。优点:库相当完善,发展时间也比较长,功能强大,据说利用dojo的io.bind()可以实现et,看见其功能强大非一般,得到IBM和SUN的支持缺点:文件体积比较大,多KB,初次下载相当慢,此外,dojo的类库使用显得不是那么易用,js语法增强方面不如prototype。Prototype(JSOOlibrary:是一个非常优雅的JS库,定义了JS的面向对象扩展,DOM操作API,事件等等,以prototype为核心,形成了一个外围的各种各样的JS扩展库,是相当有前途的JS底层框架,值得推荐,感觉也是现实中应用最广的库类(RoR集成的AJAXJS库,之上还有Scriptaculous实现一些JS组件功能和效果。优点:基本底层,易学易用,甚至是其他一些js特效开发包的底层,体积算是最小的了。缺点:如果说缺点,可能就是功能是他的弱项Scriptaculous(JSUIponentbasedonprototype:Scriptaculous是基于prototype.js框架的JS效果。包含了个js文件,不同的文件对应不同的js效果,所以说,如果底层用prototype的话,做js效果用Scriptaculous那是再合适不过的了,连大名鼎鼎的digg都在用他,可见不一般优点:基于prototype是最大的优点,由于使用prototype的广泛性,无疑对用户书锦上添花,并且在《ajaxinaction》中就拿Scriptaculous来讲述js效果缺点:刚刚兴起,需要时间的磨练yui-ext(JSUIponent):基于YahooUI的扩展包yui-ext是具有CS风格的Web用户界面组件能实现复杂的Layout布局,界面效果可以和backbase媲美,而且使用纯javascript代码开发。真正的可的表格EditGrid,支持XML和Json数据类型,直接可以迁入grid。许多组件实现了对数据源的支持,例如动态的布局,可的表格控件,动态加载的Tree控件、动态拖拽效果等等。.beta版开始同Jquery合作,推出基于jQuery的Ext.,提供了有趣的功能。优点:结构化,类似于java的结构,清晰明了,底层用到了Jquery的一些函数,使整合使用有了选择,最重要的一点是界面太让让人震撼了。缺点:太过复杂,整个界面的构造过于复杂。Jquery:jQuery是一款同prototype一样优秀js开发库类,特别是对css和XPath的支持,使我们写js变得更加方便!如果你不是个js高手又想写出优秀的js效果,jQuery可以帮你达到目的!并且简介的语法和高的效率一直是jQuery追求的目标,优点:注重简介和高效,js效果有yui-ext的选择,因为yui-ext重用了很多jQuery的函数缺点:据说太嫩,历史不悠久。Mochikit:MochiKit自称为一个轻量级的js框架。MochiKit主要受到Python和Python标准库提供的很多便利之处的启发,另外还缓解了浏览器版本之间的不一致性。其中的MochiKit.DOM尤其方便,能够以比原始JavaScript更友好的方式处理DOM对象。MochiKit.DOM大部分都是针对XHTML文档定制的,如果与MochiKit和Ajax结合在一起,使用XHTML包装的微格式尤其方便。Mochikit可以直接对字符串或者数字格式化输出,比较实用和方便。它还有自己的js代码解释器优点:MochiKit.DOM这部分很实用,简介也是很突出的缺点:轻量级的缺点mootools:MooTools是一个简洁,模块化,面向对象的JavaScript框架。它能够帮助你更快,更简单地编写可扩展和兼容性强的JavaScript代码。Mootools跟prototypejs相类似,语法几乎一样。但它提供的功能要比prototypejs多,而且更强大。比如增加了动画特效、拖放操作等等。优点:可以定制自己所需要的功能,可以说是prototypejs的增强版。缺点:不大不小,具体应用具体分析moo.fx:moo.fx是一个超级轻量级的javascript特效库(k,能够与prototype.js或mootools框架一起使用。它非常快、易于使用、跨浏览器、符合标准,提供控制和修改任何HTML元素的CSS属性,包括颜色。它内置检查器能够防止用户通过多次或疯狂点击来破坏效果。moo.fx整体采用模块化设计,所以可以在它的基础上开发你需要的任何特效。优点:小块头有大能耐缺点:这么小了,已经不错了

  ⒒js时间格式化TueApr::CST转成--

  ⒓//date是一个Date实例

  ⒔format(date){

  ⒕returndate.getFullYear()+“-“+(date.getMonth()+)+“-“+date.getDay();

  ⒖修改Date原形函数因为Date的输出函数比较多我们就拿toLocaleDateString()方法来重写

  ⒗Date.prototype.toLocaleDateString?=?function(DatePattern){?????????if(/yyyy.MM.dd/.test(DatePattern)){????????DatePattern?=?DatePattern.replace(“yyyy“,this.getFullYear()).replace(“MM“,this.getMonth()+).replace(“dd“,this.getDay());????????return?DatePattern;????????}???????return?this.toLocaleString();??};

  ⒘这里你可以以一个时间格式作为参数:

  ⒙var?date?=?new?Date();var?str?=?date.toLocaleDateString(“yyyy-MM-dd“);//返回值为格式化之后的日期

  ⒚当然并不能很全的格式化,这里也只是提供思路。

  ⒛ghost主题如何定义自一个模板呢

  Ghost的主题放在content/themes/如果你想用其他主题替换缺省的Casper主题,可以看看我们的marketplacegallery上的这些自定义主题。下载你喜欢的主题,解压之后放进content/themes里,和Casper放一起。如果你想自己做个主题,我们建议你复制casper文件夹,然后在复制的文件夹里修改模版,按你喜欢来做。要切换到你新添加的主题:重启Ghost。Ghost不会立即发现你往content/themes新添加了文件夹,所以你需要重启Ghost。登录Ghost管理后台,进入/ghost/settings/general/页面。在“Theme”下拉菜单里选择你的主题的名字。点“保存”。查看博客的前端,欣赏你的新主题吧!Handlebars是什么?Handlebars是Ghost使用的模版语言。Handlebars提供了可以使你轻松高效地建立语义模版的功能。如果你正打算开始自己写主题,也许先熟悉熟悉handlebars的语法是个不错的选择。看看handlebars文档,或者看看Treehouse上的教程——这样你就可以跳过开始的安装和使用步骤(我们帮你做好了一部分,同时避免和“基本表达”纠缠。关于Ghost主题Ghost的主题旨在做到易于编写和维护。Ghost主题推崇模版(HTML和业务逻辑(JavaScript之间的分离。Handlebars(几乎是没有逻辑,并且强化了这个分离,同时提供部件来帮助用来显示内容的业务逻辑保持独立。这种分离使在制作主题时,开发者和设计师之间的合作更加容易。Handlebars模版是分等级的(一个模版可以扩展另一个,也支持模块化的模版。Ghost拥有这些特性,使得代码的重复得以减少,同时每一个模版可以保持专注于实现单一功能,并且做到好。拥有良好架构的主题将很容易维护,而各个组成部分之间的分离使得他们可以在不同主题之间重复利用。希望你喜欢我们构造主题的方法。Ghost主题的文件架构我们推荐如下架构:.├──/assets|└──/css|├──screen.css|├──/fonts|├──/images|├──/js├──default.hbs├──index.hbs└──post.hbs目前default.hbs和其他目录都不是必要的。index.hbs和post.hbs是必须的–如果这两个模板文件不存在的话,Ghost就无法正常运行。partials是一个特殊的目录。这个目录应该包含所有你想要在整个博客范围内使用的模板文件,比如list-post.hbs可能是一个以列表形式展现一篇篇文章的模板文件,这个文件可能会被用于首页,之后可能被用于文章归档及标签页。partials也应该存放那些你想要覆盖的有特定功能的缺省模板文件比如分页。在partials目录中添加pagination.hbs文件可以让你自定义分页的HTML。default.hbs这是一个基础模板,包含了所有需要出现在每个页面的HTML代码–《html》,《head》和《body》标签,伴随着{{ghost_head}}和{{ghost_foot}},同样还有组成了博客重复的头部和尾部的HTML。默认模板包含了hanglebars表达式{{{body}}}来表示那些继承了默认模板的模板的内容。页面模板使用{{!《default}}作为第一行来表明他们继承了默认的模板,这样一来他们的内容就被放置于默认模板中{{{body}}}定义的地方了。index.hbs这是首页的模板文件,继承了default.hbs。首页有一系列文章需要展示,index.hbs定义了每篇文章该如何展示。在Casper(目前的默认主题中,首页有一个很大的头部,使用了blog全局设置来展现博客的logo,标题和描述。接下去使用了{{#foreach}}来展现一系列最新的文章。post.hbs这是单篇文章的模板文件,同样继承了default.hbs。在Casper(目前的默认主题中,单篇文章模板有属于自己的头部,同样使用了blog的全局设置,然后使用了{{#post}}数据处理器展现整篇文章。文章样式&预览当你在为Ghost创建主题的时候,请注意classes特别是IDS的使用范围,尽可能避免在主样式和文章样式之间造成冲突。你不会想到一个类名或者是一个ID(由于标题的ID将自动生成可能已经在一篇文章样式中被使用。因此,最好将使用范围限定在特定的页面。比如,#my-id可能会造成无法预料的冲突,但是#themename-my-id将会更安全一些。Ghost计划在你写文章时提供实时预览功能,但是为了实现这个功能,我们必须在管理界面载入主题中定制的文章样式。这个特点还没有引入,但是我们强烈建议将你的文章样式从主题的其他样式(style.css)中独立出来形成一个单独的文件(post.css),这样的话你就能在将来快速的利用这个特点了。创建属于你自己的主题你可以通过在content/themes目录下拷贝Casper或者以你自己的名称新建一个目录,比如my-theme(名称应该小写并且只能包含字母,数字和连字符来创建一个属于你自己的Ghost主题。然后在你新建的主题目录中新增两个空文件:index.hbs和post.hbs。这个主题不会展示任何东西,但它实际上是一个有效的主题。文章列表index.hbs有一个叫做posts的对象,它可以被foreachhelper用来输出每篇文章。比如:{{#foreachposts}}//这里我们就在单篇文章的上下文环境下了//无论你在这里放什么,文章列表中的每篇文章都会运行一遍{{/foreach}}查看{{#foreach}}helper部分了解详情。分页请查看关于{{pagination}}helper部分的内容。输出单篇文章无论是通过使用foreach遍历文章列表或者在post.hbs内部,一旦你进入了单篇文章的上下文环境,你就可以使用文章的相关属性了。目前为止,有以下相关属性:id–文章idtitle–文章标题url–文章的相对路径content–文章的HTMLpublished_at–文章的发布日期author–作者的详细信息(将会在下文中详细说明每个属性都可以使用标准的handlebars表达式进行输出,比如{{title}}。注意:content属性被{{content}}helper覆写了,这样可以保证HTML可以安全并正确地得到输出。查看关于{{content}}helper的部分了解详情。url属性由{{url}}helper提供。查看关于{{url}}helper的部分了解详情。文章作者在单篇文章的情况下,可以使用以下这些与作者有关的信息:{{author.name}}–作者的姓名{{author.email}}–作者的Email地址{{author.bio}}–作者的自我简介{{author.website}}–作者的网址{{author.image}}–作者的个人头像{{author.cover}}–作者的背景图像你可以直接使用{{author}}来输出作者的姓名。同样可以使用区块表达式:{{#author}}《ahref=文章标签在单篇文章的情况下,可以使用以下这些与标签有关的信息:{{tag.name}}–标签的名称你可以使用{{tags}}来输出一排以逗号分隔的标签,或者如果你喜欢,可以使用{{tagsseparator=““}}来指定分隔符区块表达式同样可以使用:《ul》{{#tags}}《li》{{name}}《/li》{{/tags}}《/ul》全局设置通过blog全局数据存取器,Ghost主题可以使用许多全局设置。{{blog.url}}–在config.js文件中当前环境(配置文件分开发环境和生产环境下指定的网址{{blog.title}}–设置页面中的博客标题{{blog.description}}–设置页面中的博客描述{{blog.logo}}–设置页面中的博客logo内置的帮手Ghost有许多内置的帮手,他们为你创建主题提供需要的工具。有两种类型的帮手:区块帮手和输出帮手。区块帮手有开始和结束标签,比如{{#foreach}}{{/foreach}}。标签之间的语境是变化的,你可以通过标示符来使用这些帮手提供的额外属性。输出帮手看起来更像是用来输出数据的表达式,比如{{content}}。在输出数据前,他们对数据执行一些有用的操作,并且通常提供相关选项,让你选择如何格式化这些数据。一些输出帮手使用HTML模板来格式化数据,就像局部模板一样。有些输出帮手同时也是区块帮手,他们的作用是动态变化的。foreach类型:区块选项:columns(数值){{#foreach}}是一个特别的循环帮手,被用来处理文章列表。在handlebars中,每个帮手都会为数组添加私有属性index,为对象添加私有属性key,他们可以在每次循环的内部被使用。foreach继承了这一点并且为数组和对象添加了额外的私有属性,first,last,even,odd,rowStart和rowEnd。这些私有属性可以被用来为文章列表和其他内容构造更复杂的布局。比如下面的例子:first&last下面这个例子在一个数组或对象,比如posts中测试第一个进入循环的元素。{{#foreachposts}}{{#iffirst}}《div》Firstpost《/div》{{/if}}{{/foreach}}我们还可以通过嵌套if声明来检查多个属性。在下面这个例子中,我们将单独输出第一篇和最后一篇文章,将他们与其他文章分开。{{#foreachposts}}{{#iffirst}}《div》Firstpost《/div》{{else}}{{#iflast}}《div》Lastpost《/div》{{else}}《div》Allotherposts《/div》{{/if}}{{/if}}{{/foreach}}even&odd下面这个例子为属性class添加了even或者odd的值,他们可以被用在需要斑马条纹样式的内容上。{{#foreachposts}}《divclass=“{{#ifeven}}even{{else}}odd{{/if}}“》{{title}}《/div》{{/foreach}}rowStart&rowEnd下面的例子想你展示了如何传递一个column选项,这样一来你就可以为一行中的第一个和最后一个元素设置属性了。内容可以以格子布局得到展示。{{#foreachpostscolumns=}}《liclass=“{{#ifrowStart}}first{{/if}}{{#ifrowEnd}}last{{/if}}“》{{title}}《/li》{{/foreach}}content类型:输出选项:words(数值),characters(数值){{content}}是一个用来输出文章内容的非常简单的帮手。它确保文章的HTML可以正确输出。你可以通过传递任何一个选项来限制输出的HTML内容数量。{{contentwords=““}}将会输出个HTML单词,包括正确的标签。excerpt类型:输出选项:words(数值),characters(数值){{excerpt}}输出过滤掉所有HTML的内容。这在创建文章摘要的时候非常有用。你可以通过传递任何一个选项来限制输出文字的数量:{{excerptcharacters=““}}将会输出个字符。date类型:输出帮手选项:format(日期格式,默认是“MMMDo,YYYY”),timeago(布尔值){{date}}是一个可以以各种格式输出日期的格式帮手。你可以传递一个日期和一个用来输出日期的格式字符串,就像这样://结果将会是这样’July,’{{datepublished_atformat=“MMMMDD,YYYY“}}或者你可以传递一个日期和timeago标识://结果将会是这样’minsago’{{datepublished_attimeago=“true“}}如果你直接使用{{date}}不加任何格式,默认的格式是“MMMDo,YYYY”。如果你在一篇文章的内部使用{{date}}但是并没有指定显示哪个日期,默认会是published_at。如果你在一篇文章的外部使用{{date}}并且也没有指明显示哪个日期,默认会是当前日期。date使用moment.js来格式化日期。查看他们的文档,那儿详细地解释了可以使用的所有不同格式。url类型:输出帮手选项:absolute{{url}}在一篇文章内部输出它的相对路径,在文章外部什么都不会输出。你可以使用absolute选项来强制输出绝对路径,比如:{{urlabsolute=“true“}}pagination类型:输出,模板驱动选项:无(马上就会有的){{pagination}}是一个模板驱动的帮手,如果’newerposts’和’olderposts’的链接存在的话,它将输出他们的HTML并且告诉你正处于哪一页。你可以通过在content/themes/your-theme/partials目录中放置一个叫做pagination.hbs的文件来覆盖分页帮手输出的HTML。body_class类型:输出选项:无{{body_class}}–在default.hbs中为《body》标签输出class属性,在为特定页面渲染样式时非常有用。post_class类型:输出选项:无{{post_class}}–为文章容器输出class属性,在渲染文章样式的时候特别有用。ghost_head类型:输出选项:无{{ghost_head}}–位于default.hbs中的《/head》标签前,用来输出meta标签,脚本和样式。计划使用钩子。ghost_foot类型:输出选项:无{{ghost_foot}}–位于default.hbs中的《/body》标签前,用来输出引入脚本。默认输出jquery。计划使用钩子。meta_title类型:输出选项:无{{meta_title}}–在文章中输出文章标题,其他地方输出博客标题。被用来在《/head》块中输出title标签,比如:《title》{{meta_title}}《/title》计划使用钩子。meta_description类型:输出选项:无{{meta_description}}-在文章方面暂时不输出任何内容,在所有其他的页面输出博客的描述。一般用来输出描述元标签,比如:《metaname=“description“content=“{{meta_description}}“/》计划使用钩子。主题错误排查.我看到错误:Failedtolookupview“index“or“post“检查你的主题目录下是否存在index.hbs和post.hbs两个文件,他们是必须的。

  String.format=function(){if(arguments.length==)returnnull;varstr=arguments;for(vari=;i《arguments.length;i++){varre=newRegExp(’\{’+(i-)+’\}’,’gm’);str=str.replace(re,arguments);}returnstr;}这是js里面的format函数,使用和C#里面一样的vara=String.format(’{}{}’,,)你自己可以去试试看,%成功

您可能感兴趣的文章:

相关文章