0.2.12 • Published 10 years ago

lime-razor v0.2.12

Weekly downloads
3
License
-
Repository
github
Last release
10 years ago

limerun lime-razor

Build Status NPM NPM NPM

NPM

About

This is a simple razor view engine in Node.js javascript for OWIN-JS REST framework. It was created for the limerun project.

Installation

$ npm install lime-razor

Credits

This project, including documentation, was forked under MIT license from andyedinborough/RazorJS with various changes throughout to filename and package handling, and so that it that is easier to consume from OWIN-JS, Connect, Koa, and Express middleware.

To date, the raw parsing routines have not been adjusted materially from the RazorJS implementation.

API

A JavaScript implementation of the Razor view engine that aims to be simple and compatible for use both in the browser and in Node--simple enough for templating:

Razor.compile('hello @model.name')({ name: 'world' }) == 'hello world'

As well as a Node view-engine:

// Dependencies
const lime = require('limerun')
    , razor = require('lime-razor')
    , router = require('lime-router')
    , http = require('http');

// Initiate Factories
var route = router();
var app = new owin.app();

// Run Application
app.use(route);
route.get('/', function(){return  razor.renderViewAsync(this, 'index.js.html');});
http.createServer(app.buildHttp()).listen(8000);

Live Demo (of underlying view engine technology)

Try RazorJS in your browser now: http://jsbin.com/imihov/latest

Syntax

  <tr>
      <td valign="top">Code Block</td>
      <td valign="top">
          <pre>

@{ int x = 123; string y = "because."; }

  <tr>
      <td valign="top">Expression (Html Encoded)</td>
      <td valign="top">
          <pre>

<span>@model.message</span>

  <tr>
      <td valign="top">Expression (Unencoded)</td>

      <td valign="top">
          <pre>

<span> @html.raw(model.message) </span>

  <tr>
      <td valign="top">Combining Text and markup</td>

      <td valign="top">
          <pre>

@@{ model.items.forEach(function(item) { <span>@item.Prop</span> }); }

  <tr>
      <td valign="top">Mixing code and Plain text</td>

      <td valign="top">
          <pre>

@if (foo) { <text>Plain Text</text> }

  <tr>
      <td valign="top">Mixing code and plain text
      (alternate)</td>

      <td valign="top">
          <pre>

@if (foo) { @:Plain Text is @bar }

  <tr>
      <td valign="top">Email Addresses</td>

      <td valign="top">
          <pre>

Hi test@example.com

      <td valign="top">Razor recognizes basic email
      format and is smart enough not to treat the @ as a code
      delimiter</td>
  </tr>

  <tr>
      <td valign="top">Explicit Expression</td>

      <td valign="top">
          <pre>

<span>ISBN@(isbnNumber)</span>

      <td valign="top">In this case, we need to be
      explicit about the expression by using parentheses.</td>
  </tr>

  <tr>
      <td valign="top">Escaping the @ sign</td>

      <td valign="top">
          <pre>

<span>In Razor, you use the @@foo to display the value of foo</span>

      <td valign="top">@@ renders a single @ in the
      response.</td>
  </tr>

  <tr>
      <td valign="top">Server side Comment</td>

      <td valign="top">
          <pre>

@ This is a server side multiline comment @

  <tr>
      <td valign="top">Mixing expressions and text</td>

      <td valign="top">
          <pre>

Hello @title. @name.

  <tr>
    <td valign="top">Partials </td>
    <td>
        <pre>

@html.renderPartial('another-view')

  <tr>
    <td valign="top">Layouts </td>
    <td>
        <strong>View</strong>
        <pre>

@{ this.layout = '_layout'; }

@section my_section(){ @:hi! }

0.2.12

10 years ago

0.2.11

10 years ago

0.2.9

10 years ago

0.2.8

10 years ago

0.2.7

10 years ago

0.2.6

10 years ago

0.2.5

10 years ago

0.2.4

10 years ago

0.2.3

10 years ago

0.2.2

10 years ago

0.2.1

10 years ago

0.2.0

10 years ago