实例介绍
Handlebars.Net是一个在.NET应用程序中使用快速的Handlebars.js模板的扩展。
Handlebars.js是由Chris Wanstrath创建的Mustache模板语言的扩展。
Handlebars.js和Mustache都是无逻辑的模板语言,将视图和代码分开,正如我们都知道的那样。
Handlebars.Net不使用脚本引擎来运行JavaScript库-它直接将Handlebars模板编译为IL字节码。它还尽可能地模仿了JS库的API。
扩展
以下项目正在扩展Handlebars.Net:
- Handlebars.Net.Extension.Json(添加System.Text.Json.JsonDocument支持)
- Handlebars.Net.Extension.NewtonsoftJson(添加Newtonsoft.Json支持)
- Handlebars.Net.Helpers(在以下类别中提供附加帮助程序:'Constants'、'Enumerable'、'Math'、'Regex'、'String'、'DateTime'、'Url'、'DynamicLinq'、'Humanizer'、'Json'、'Random'、'Xeger'和'XPath'。)
【核心代码】
文件清单
└── Handlebars.Net-9cf16727d3acc2efa6ab180e8f8a90c2e2b301ee
├── hbnet-icon.png
├── LICENSE
├── README.md
└── source
├── Directory.Build.props
├── Handlebars
│ ├── Arguments.cs
│ ├── BindingContext.cs
│ ├── BlockHelperOptions.cs
│ ├── Collections
│ │ ├── CascadeIndex.cs
│ │ ├── DictionarySlim.cs
│ │ ├── EnumeratorValue.cs
│ │ ├── ExtendedEnumerator.cs
│ │ ├── FixedSizeDictionary.cs
│ │ ├── HashHelper.cs
│ │ ├── IAppendOnlyList.cs
│ │ ├── IIndexed.cs
│ │ ├── ImmutableStack.cs
│ │ ├── IReadOnlyIndexed.cs
│ │ ├── LookupSlim.cs
│ │ ├── ObservableEvent.cs
│ │ ├── ObservableIndex.cs
│ │ ├── ObservableList.cs
│ │ ├── ObserverBuilder.cs
│ │ └── WeakCollection.cs
│ ├── Compiler
│ │ ├── ClosureBuilder.cs
│ │ ├── CompilationContext.cs
│ │ ├── ExpressionBuilder.cs
│ │ ├── FunctionBuilder.cs
│ │ ├── HandlebarsCompiler.cs
│ │ ├── HandlebarsCompilerException.cs
│ │ ├── IExpressionCompiler.cs
│ │ ├── IExpressionMiddleware.cs
│ │ ├── Lexer
│ │ │ ├── Converter
│ │ │ │ ├── BlockAccumulator.cs
│ │ │ │ ├── BlockAccumulators
│ │ │ │ │ ├── BlockAccumulatorContext.cs
│ │ │ │ │ ├── BlockHelperAccumulatorContext.cs
│ │ │ │ │ ├── ConditionalBlockAccumulatorContext.cs
│ │ │ │ │ ├── IteratorBlockAccumulatorContext.cs
│ │ │ │ │ └── PartialBlockAccumulatorContext.cs
│ │ │ │ ├── BlockParamsConverter.cs
│ │ │ │ ├── CommentAndLayoutConverter.cs
│ │ │ │ ├── ExpressionScopeConverter.cs
│ │ │ │ ├── HashParameterConverter.cs
│ │ │ │ ├── HashParametersAccumulator.cs
│ │ │ │ ├── HelperArgumentAccumulator.cs
│ │ │ │ ├── HelperConverter.cs
│ │ │ │ ├── LiteralConverter.cs
│ │ │ │ ├── PartialConverter.cs
│ │ │ │ ├── PathConverter.cs
│ │ │ │ ├── RawHelperAccumulator.cs
│ │ │ │ ├── StaticConverter.cs
│ │ │ │ ├── SubExpressionConverter.cs
│ │ │ │ ├── TokenConverter.cs
│ │ │ │ └── WhitespaceRemover.cs
│ │ │ ├── HandlebarsParserException.cs
│ │ │ ├── Parsers
│ │ │ │ ├── BlockParamsParser.cs
│ │ │ │ ├── BlockWordParser.cs
│ │ │ │ ├── CommentParser.cs
│ │ │ │ ├── LiteralParser.cs
│ │ │ │ ├── Parser.cs
│ │ │ │ ├── PartialParser.cs
│ │ │ │ └── WordParser.cs
│ │ │ ├── Tokenizer.cs
│ │ │ └── Tokens
│ │ │ ├── AssignmentToken.cs
│ │ │ ├── BlockParameterToken.cs
│ │ │ ├── CommentToken.cs
│ │ │ ├── EndExpressionToken.cs
│ │ │ ├── EndSubExpressionToken.cs
│ │ │ ├── ExpressionScopeToken.cs
│ │ │ ├── ExpressionToken.cs
│ │ │ ├── LayoutToken.cs
│ │ │ ├── LiteralExpressionToken.cs
│ │ │ ├── PartialToken.cs
│ │ │ ├── StartExpressionToken.cs
│ │ │ ├── StartSubExpressionToken.cs
│ │ │ ├── StaticToken.cs
│ │ │ ├── Token.cs
│ │ │ ├── TokenType.cs
│ │ │ └── WordExpressionToken.cs
│ │ ├── Middlewares
│ │ │ ├── ClosureExpressionMiddleware.cs
│ │ │ └── ExpressionOptimizerMiddleware.cs
│ │ ├── Resolvers
│ │ │ ├── IExpressionNameResolver.cs
│ │ │ └── UpperCamelCaseExpressionNameResolver.cs
│ │ ├── Structure
│ │ │ ├── BlockHelperExpression.cs
│ │ │ ├── BlockParamsExpression.cs
│ │ │ ├── BoolishExpression.cs
│ │ │ ├── CommentExpression.cs
│ │ │ ├── HandlebarsExpression.cs
│ │ │ ├── HashParameterAssignmentExpression.cs
│ │ │ ├── HashParametersExpression.cs
│ │ │ ├── HelperExpression.cs
│ │ │ ├── IteratorExpression.cs
│ │ │ ├── PartialExpression.cs
│ │ │ ├── PathExpression.cs
│ │ │ ├── StatementExpression.cs
│ │ │ ├── StaticExpression.cs
│ │ │ └── SubExpressionExpression.cs
│ │ └── Translation
│ │ └── Expression
│ │ ├── BlockHelperFunctionBinder.cs
│ │ ├── BoolishConverter.cs
│ │ ├── CommentVisitor.cs
│ │ ├── ContextBinder.cs
│ │ ├── DecoratorDefinition.cs
│ │ ├── FunctionBinderHelpers.cs
│ │ ├── HandlebarsExpressionVisitor.cs
│ │ ├── HandlebarsUndefinedBindingException.cs
│ │ ├── HashParameterBinder.cs
│ │ ├── HashParameterDictionary.cs
│ │ ├── HelperFunctionBinder.cs
│ │ ├── IteratorBinder.cs
│ │ ├── PartialBinder.cs
│ │ ├── PathBinder.cs
│ │ ├── StaticReplacer.cs
│ │ ├── SubExpressionVisitor.cs
│ │ └── UnencodedStatementVisitor.cs
│ ├── Configuration
│ │ ├── Compatibility.cs
│ │ ├── CompileTimeConfiguration.cs
│ │ ├── HandlebarsConfigurationAdapter.cs
│ │ ├── HandlebarsConfiguration.cs
│ │ └── ICompiledHandlebarsConfiguration.cs
│ ├── Context.cs
│ ├── Decorators
│ │ ├── BlockDecoratorOptions.cs
│ │ ├── DecoratorOptions.cs
│ │ ├── DelegateBlockDecoratorDescriptor.cs
│ │ ├── DelegateBlockDecoratorVoidDescriptor.cs
│ │ ├── DelegateDecoratorDescriptor.cs
│ │ ├── DelegateDecoratorVoidDescriptor.cs
│ │ ├── EmptyBlockDecorator.cs
│ │ ├── EmptyDecorator.cs
│ │ ├── IDecoratorDescriptor.cs
│ │ ├── IDecoratorOptions.cs
│ │ └── InlineBlockDecoratorDescriptor.cs
│ ├── _Delegates.cs
│ ├── DynamicViewModel.cs
│ ├── EqualityComparers
│ │ ├── ChainSegment.ChainSegmentEqualityComparer.cs
│ │ ├── IntegerEqualityComparer.cs
│ │ ├── PathInfoLight.PathInfoLightEqualityComparer.cs
│ │ ├── PathInfo.TrimmedPathEqualityComparer.cs
│ │ ├── ReferenceEqualityComparer.cs
│ │ └── StringEqualityComparer.cs
│ ├── Extensions
│ │ ├── EnumerableExtensions.cs
│ │ ├── ObjectExtensions.cs
│ │ ├── ObjectPoolExtensions.cs
│ │ ├── ReaderWriterLockSlimExtensions.cs
│ │ ├── StringBuilderExtensions.cs
│ │ └── TypeExtensions.cs
│ ├── Features
│ │ ├── BuildInHelpersFeature.cs
│ │ ├── CollectionMemberAliasProviderFeature.cs
│ │ ├── DefaultCompilerFeature.cs
│ │ ├── FeatureOrderAttribute.cs
│ │ ├── IFeature.cs
│ │ ├── IFeatureFactory.cs
│ │ ├── MissingHelperFeature.cs
│ │ └── WarmUpFeature.cs
│ ├── FileSystemPartialTemplateResolver.cs
│ ├── Handlebars.cs
│ ├── Handlebars.csproj
│ ├── HandlebarsEnvironment.cs
│ ├── HandlebarsException.cs
│ ├── HandlebarsExtensions.cs
│ ├── HandlebarsRuntimeException.cs
│ ├── HandlebarsUtils.cs
│ ├── HandlebarsViewEngine.cs
│ ├── HelperOptions.cs
│ ├── Helpers
│ │ ├── BlockHelpers
│ │ │ ├── DelegateBlockHelperDescriptor.cs
│ │ │ ├── DelegateReturnBlockHelperDescriptor.cs
│ │ │ ├── LateBindBlockHelperDescriptor.cs
│ │ │ ├── MissingBlockHelperDescriptor.cs
│ │ │ └── WithBlockHelperDescriptor.cs
│ │ ├── DelegateHelperDescriptor.cs
│ │ ├── DelegateHelperWithOptionsDescriptor.cs
│ │ ├── DelegateReturnHelperDescriptor.cs
│ │ ├── DelegateReturnHelperWithOptionsDescriptor.cs
│ │ ├── HelperExtensions.cs
│ │ ├── IHelperDescriptor.cs
│ │ ├── IHelperResolver.cs
│ │ ├── LateBindHelperDescriptor.cs
│ │ ├── LookupReturnHelperDescriptor.cs
│ │ └── MissingHelperDescriptor.cs
│ ├── IDescriptor.cs
│ ├── IHandlebars.cs
│ ├── IHelperOptions.cs
│ ├── IHelpersRegistry.cs
│ ├── IMissingPartialTemplateHandler.cs
│ ├── IO
│ │ ├── EncodedTextWriter.cs
│ │ ├── EncodedTextWriterWrapper.cs
│ │ ├── ExtendedStringReader.cs
│ │ ├── Formatters
│ │ │ ├── CollectionFormatterProvider.cs
│ │ │ ├── DefaultFormatterProvider.cs
│ │ │ ├── DefaultFormatters
│ │ │ │ ├── DefaultBoolFormatter.cs
│ │ │ │ ├── DefaultCharFormatter.cs
│ │ │ │ ├── DefaultDateTimeFormatter.cs
│ │ │ │ ├── DefaultDecimalFormatter.cs
│ │ │ │ ├── DefaultDoubleFormatter.cs
│ │ │ │ ├── DefaultFloatFormatter.cs
│ │ │ │ ├── DefaultIntFormatter.cs
│ │ │ │ ├── DefaultLongFormatter.cs
│ │ │ │ ├── DefaultObjectFormatter.cs
│ │ │ │ ├── DefaultShortFormatter.cs
│ │ │ │ ├── DefaultUIntFormatter.cs
│ │ │ │ ├── DefaultULongFormatter.cs
│ │ │ │ └── DefaultUShortFormatter.cs
│ │ │ ├── FormatterProvider.cs
│ │ │ ├── IFormatter.cs
│ │ │ ├── IFormatterProvider.cs
│ │ │ ├── ReadOnlyCollectionFormatterProvider.cs
│ │ │ └── UndefinedFormatter.cs
│ │ ├── HtmlEncoder.cs
│ │ ├── HtmlEncoderLegacy.cs
│ │ ├── IReaderContext.cs
│ │ ├── ITextEncoder.cs
│ │ ├── PolledStringWriter.cs
│ │ └── TextEncoderWrapper.cs
│ ├── IOptions.cs
│ ├── IPartialTemplateResolver.cs
│ ├── Iterators
│ │ ├── ArrayIterator.cs
│ │ ├── CollectionIterator'2.cs
│ │ ├── CollectionIterator.cs
│ │ ├── DictionaryIterator'2.cs
│ │ ├── DictionaryIterator.cs
│ │ ├── DynamicObjectIterator.cs
│ │ ├── EnumerableIterator'2.cs
│ │ ├── EnumerableIterator.cs
│ │ ├── IIterator.cs
│ │ ├── ListIterator'2.cs
│ │ ├── ListIterator.cs
│ │ ├── ObjectIterator.cs
│ │ ├── ReadOnlyCollectionIterator'2.cs
│ │ ├── ReadOnlyDictionaryIterator'2.cs
│ │ └── ReadOnlyListIterator'2.cs
│ ├── LayoutViewModel.cs
│ ├── MemberAccessors
│ │ ├── DictionaryAccessors
│ │ │ ├── GenericDictionaryAccessor.cs
│ │ │ ├── ReadOnlyGenericDictionaryAccessor.cs
│ │ │ ├── ReadOnlyStringDictionaryAccessor.cs
│ │ │ └── StringDictionaryAccessor.cs
│ │ ├── DictionaryMemberAccessor.cs
│ │ ├── DynamicMemberAccessor.cs
│ │ ├── EnumerableAccessors
│ │ │ ├── EnumerableMemberAccessor'2.cs
│ │ │ ├── EnumerableMemberAccessor.cs
│ │ │ ├── ListMemberAccessor.cs
│ │ │ └── ReadOnlyListMemberAccessor.cs
│ │ ├── IMemberAccessor.cs
│ │ ├── MergedMemberAccessor.cs
│ │ └── ReflectionMemberAccessor.cs
│ ├── MemberAliasProvider
│ │ ├── CollectionMemberAliasProvider.cs
│ │ ├── DelegatedMemberAliasProvider.cs
│ │ └── IMemberAliasProvider.cs
│ ├── ObjectDescriptors
│ │ ├── DictionaryObjectDescriptor.cs
│ │ ├── DynamicObjectDescriptor.cs
│ │ ├── EnumerableObjectDescriptor.cs
│ │ ├── GenericDictionaryObjectDescriptorProvider.cs
│ │ ├── IObjectDescriptorProvider.cs
│ │ ├── ObjectAccessor.cs
│ │ ├── ObjectDescriptor.cs
│ │ ├── ObjectDescriptorFactory.cs
│ │ ├── ObjectDescriptorProvider.cs
│ │ ├── ReadOnlyGenericDictionaryObjectDescriptorProvider.cs
│ │ ├── ReadOnlyStringDictionaryObjectDescriptorProvider.cs
│ │ └── StringDictionaryObjectDescriptorProvider.cs
│ ├── PathInfoLight.cs
│ ├── PathStructure
│ │ ├── ChainSegment.cs
│ │ ├── ChainSegmentStore.cs
│ │ ├── PathInfo.cs
│ │ ├── PathInfoStore.cs
│ │ ├── PathResolver.cs
│ │ ├── PathSegment.cs
│ │ └── WellKnownVariable.cs
│ ├── Polyfills
│ │ ├── ArrayEx.cs
│ │ └── AsyncLocal.cs
│ ├── Pools
│ │ ├── BindingContext.Pool.cs
│ │ ├── ClosureBuilder.Pool.cs
│ │ ├── GenericObjectPool.cs
│ │ ├── ObjectPool.cs
│ │ └── StringBuilderPool.cs
│ ├── Runtime
│ │ ├── AmbientContext.cs
│ │ ├── BoxedValues.cs
│ │ ├── DeferredValue.cs
│ │ ├── DisposableContainer.cs
│ │ ├── GcDeferredValue.cs
│ │ └── Ref.cs
│ ├── StringUtils
│ │ ├── StringBuilderEnumerator.cs
│ │ ├── StringEnumerator.cs
│ │ └── Substring.cs
│ ├── UndefinedBindingResult.cs
│ └── ValueProviders
│ ├── BlockParamsValues.cs
│ ├── DataValues.cs
│ ├── IteratorValues.cs
│ └── ObjectIteratorValues.cs
├── Handlebars.Benchmark
│ ├── Compilation.cs
│ ├── EndToEnd.cs
│ ├── Execution.cs
│ ├── Handlebars.Benchmark.csproj
│ ├── LargeArray.cs
│ └── Program.cs
├── Handlebars.sln
└── Handlebars.Test
├── ArgumentsTests.cs
├── BasicIntegrationTests.cs
├── ClosureBuilderTests.cs
├── Collections
│ ├── FixedSizeDictionaryTests.cs
│ └── WeakCollectionTests.cs
├── ComplexIntegrationTests.cs
├── coverlet.runsettings
├── CustomConfigurationTests.cs
├── DecoratorTests.cs
├── DynamicTests.cs
├── EncodedTextWriterTests.cs
├── ExceptionTests.cs
├── HandlebarsEnvGenerator.cs
├── Handlebars.Test.csproj
├── HelperTests.cs
├── HtmlEncoderLegacyTests.cs
├── HtmlEncoderTests.cs
├── InlinePartialTests.cs
├── IssueTests.cs
├── IteratorTests.cs
├── NumericLiteralTests.cs
├── PartialResolverTests.cs
├── PartialTests.cs
├── PathInfoTests.cs
├── RawHelperTests.cs
├── ReadmeTests.cs
├── StringBuilderExtensionsTests.cs
├── SubExpressionTests.cs
├── SubstringTests.cs
├── TripleStashTests.cs
├── ViewEngine
│ ├── CasparTests.cs
│ ├── Casper-master
│ │ ├── author.hbs
│ │ ├── default.hbs
│ │ ├── index.hbs
│ │ ├── page.hbs
│ │ ├── partials
│ │ │ ├── loop.hbs
│ │ │ └── navigation.hbs
│ │ ├── post.hbs
│ │ ├── post-no-layout.hbs
│ │ ├── README.md
│ │ └── tag.hbs
│ └── ViewEngineTests.cs
└── WhitespaceTests.cs
43 directories, 335 files
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论