nooljs
Version:
Full stack JavaScript framework created top of Nodejs, express, and Socket-io, and Angularjs
131 lines (98 loc) • 3.72 kB
Markdown
# nooljs ( Beta)
## Introduction
Full stack JavaScript framework built using the famous open sources libraries.. Nodejs, Angularjs, expressjs, npm, socket-io.
* Easy to build complex data driven JavaScript applications with minimum coding.
* Support multiple data connections suck as ms-sql, MySQL, PostgreSQL, and Mondodb.
* Real time framework build top of Express-js and socket-io
* The client side is powered by the Angularjs. The layout can be built using the Angularjs tags and elements.
* Modularized layout to simplify the comlex web pages.
* Can be mixed both Express-js and socket-io
## Quick Start
1. Install nooljs with npm
`$ npm install nooljs -g`
2. Create new nooljs project by running command
`$ nooljs`
It will ask project name. enter the project name( example testprj). It will create new folder for the project and sample application.
3. Go the new project folder
`$ cd testproj`
4. Update the npm dependency packages
`npm update`
5. Run the application
`node app.js`
## Tutorials & Blogs
Tutorials & Blogs are available at https://nooljs.blogspot.ca/
## Source Code
Source codes can be downloaded from https://github.com/nooljs/nooljs
## API Document
For the full document please visit http://nooljs.github.io/nooljs/
### Folder Structure
* config -- Configuration folder
* layout - Contains all the layout files
* public -- Public files ( js, image)
* server -- All the server side JavaScript files
* servermethod -- Put all the server methods here
### Layout
The Layout is heart of the nooljs project. Each page/module of the application can be defined as layout.
It should be keep inside the layout folder.
```
<nl-template id="store-edit-template" nl-permission="store-edit" nl-parent="main-content" >
</nl-template>
<nl-server-script>
</nl-server-script>
<nl-client-script>
```
The layout file contains three parts :
* nl-template - Html template for the module
* nl-server-script - Sever side javascript code for this module
* nl-client-script - Client side javascript code for this module
### nl-template
nl-template contains all the html for the given module. It can be easily injected into html page or layout file.
The sample layout is shown below:
```
<nl-template id="store-edit-template" nl-permission="store-edit" nl-parent="main-content" >
<button class="button button-block button-positive" id="item-edit-back"
nl-click-redirect="{'url':'store-template'}" > Back
</button>
<h1 >{{store.StoreName}} Edit</h1>
<ion-content class="has-header has-footer">
<ion-list nl-server-data="getStore" nl-post-client="assignStoreName">
<ion-item>
<label class="item-input">
<span class="input-label">Store name</span>
<input type="text" ng-model="store.StoreName" />
</label>
<ion-item>
<label class="item-input item-select">
<span class="input-label">Country</span><div nl-db-data="exec dbo.usp_GetCountries" nl-db-model="countries" nl-cahche="sessionStorage">
<select ng-model="store.Country" >
<option ng-repeat="country in countries" value="{{country.CountryCode}}" ng-selected="country.CountryCode==store.Country">{{country.CountryName}}</option>
</select>
</div>
</label>
</ion-item>
</ion-list>
</ion-content>
</nl-template>
<nl-server-script>
{
getStore:
{
model:"store",
db:
{
query:"exec Admin_GetStoreInfo {{StoreId}}",
resultType:"single"
}
}
}
</nl-server-script>
<nl-client-script>
{
assignStoreName:function ($scope)
{
console.log(" enter assignDefaultStore function ");
$scope.$root.storeName = $scope.store.StoreName;
}
}
</nl-client-script>
```