",
6 | "keywords": [
7 | "angular",
8 | "angularjs",
9 | "require",
10 | "requirejs",
11 | "angularjs-requirejs",
12 | "boilerplate"
13 | ],
14 | "repository": {
15 | "type": "git",
16 | "url": "https://github.com/ipluser/angularjs-requirejs-boilerplate.git"
17 | },
18 | "license": "MIT",
19 | "homepage": "https://github.com/ipluser/angularjs-requirejs-boilerplate",
20 | "dependencies": {
21 | "body-parser": "^1.14.2",
22 | "browser-sync": "^2.11.0",
23 | "bunyan": "^1.5.1",
24 | "compression": "^1.5.2",
25 | "cookie-parser": "^1.4.0",
26 | "del": "^2.0.2",
27 | "errorhandler": "^1.4.2",
28 | "express": "^4.13.3",
29 | "fs-extra": "^0.24.0",
30 | "gulp": "^3.9.0",
31 | "gulp-angular-templatecache": "^1.8.0",
32 | "gulp-concat": "^2.6.0",
33 | "gulp-help": "^1.6.1",
34 | "gulp-if": "^2.0.0",
35 | "gulp-jshint": "^1.11.2",
36 | "gulp-less": "^3.0.3",
37 | "gulp-markdown": "^1.2.0",
38 | "gulp-minify-css": "^1.2.1",
39 | "gulp-plumber": "^1.0.1",
40 | "gulp-replace": "^0.5.4",
41 | "gulp-size": "^2.0.0",
42 | "gulp-uglify": "^1.4.1",
43 | "gulp-util": "^3.0.6",
44 | "jshint-stylish": "^2.0.1",
45 | "lodash": "^3.10.1",
46 | "mobile-detect": "^1.3.0",
47 | "morgan": "^1.6.1",
48 | "requirejs": "^2.1.20",
49 | "serve-favicon": "^2.3.0",
50 | "swig": "^1.4.2",
51 | "vinyl-paths": "^2.0.0",
52 | "yargs": "^3.31.0"
53 | },
54 | "devDependencies": {
55 | "gulp-nodemon": "^2.0.4",
56 | "jasmine-core": "^2.3.4",
57 | "karma": "^0.13.10",
58 | "karma-coverage": "^0.5.2",
59 | "karma-htmlfile-reporter": "^0.2.2",
60 | "karma-jasmine": "^0.3.6",
61 | "karma-ng-html2js-preprocessor": "^0.2.0",
62 | "karma-phantomjs-launcher": "^0.2.1",
63 | "karma-requirejs": "^0.2.2",
64 | "phantomjs": "^1.9.18"
65 | },
66 | "scripts": {
67 | "start": "node app.js",
68 | "test": "karma start"
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/public/images/desktop/forkme_right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ipluser/angularjs-requirejs-boilerplate/3186dc400d4997338f628911c37beec36c7e3783/public/images/desktop/forkme_right.png
--------------------------------------------------------------------------------
/public/images/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ipluser/angularjs-requirejs-boilerplate/3186dc400d4997338f628911c37beec36c7e3783/public/images/favicon.ico
--------------------------------------------------------------------------------
/public/images/mobile/forkme_right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ipluser/angularjs-requirejs-boilerplate/3186dc400d4997338f628911c37beec36c7e3783/public/images/mobile/forkme_right.png
--------------------------------------------------------------------------------
/public/scripts/desktop/angular-app.js:
--------------------------------------------------------------------------------
1 | define('desktop/angular-app', [
2 | 'angular'
3 | ], function(angular) {
4 | var angularApp = angular.module('angularApp', []);
5 | return angularApp;
6 | });
--------------------------------------------------------------------------------
/public/scripts/desktop/bootstrap.js:
--------------------------------------------------------------------------------
1 | GlobalConfig.requireScripts.unshift(
2 | 'angular',
3 | 'desktop/angular-app'
4 | );
5 |
6 | require(GlobalConfig.requireScripts, function (angular) {
7 | angular.bootstrap(document, ['angularApp']);
8 | });
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/public/scripts/desktop/controllers/default/samples-controller.js:
--------------------------------------------------------------------------------
1 | define('desktop/controllers/default/samples-controller', [
2 | 'desktop/angular-app',
3 | 'desktop/filters/common/mock-upper-case',
4 | 'desktop/directives/components/mock-tabs',
5 | 'desktop/services/default/samples-service'
6 | ], function (angularApp) {
7 | angularApp.controller('SamplesCtrl', [
8 | '$scope', 'SamplesService', function ($scope, SamplesService) {
9 | $scope.panes = SamplesService.getDesc();
10 | }
11 | ]);
12 | });
--------------------------------------------------------------------------------
/public/scripts/desktop/directives/components/mock-tabs.js:
--------------------------------------------------------------------------------
1 | define('desktop/directives/components/mock-tabs', [
2 | 'desktop/angular-app'
3 | ], function (angularApp) {
4 | angularApp.directive('mockTabs', function() {
5 | return {
6 | restrict: 'E',
7 | transclude: true,
8 | replace: true,
9 | scope: true,
10 | controller: ['$scope', function($scope) {
11 | var panes = $scope.panes = [];
12 |
13 | $scope.select = function(pane) {
14 | angular.forEach(panes, function(pane) {
15 | pane.selected = false;
16 | });
17 | pane.selected = true;
18 | }
19 |
20 | this.addPane = function(pane) {
21 | if (panes.length == 0) $scope.select(pane);
22 | panes.push(pane);
23 | }
24 | }],
25 | templateUrl: '/desktop/templates/components/mock-tabs.html'
26 | };
27 | }).directive('mockPane', function() {
28 | return {
29 | require: '^mockTabs',
30 | restrict: 'E',
31 | transclude: true,
32 | replace: true,
33 | scope: {
34 | title: '@'
35 | },
36 | link: function(scope, element, attrs, tabsController) {
37 | tabsController.addPane(scope);
38 | },
39 | templateUrl: '/desktop/templates/components/mock-pane.html'
40 | };
41 | });
42 | });
--------------------------------------------------------------------------------
/public/scripts/desktop/filters/common/mock-upper-case.js:
--------------------------------------------------------------------------------
1 | define('desktop/filters/common/mock-upper-case', [
2 | 'desktop/angular-app'
3 | ], function (angularApp) {
4 | angularApp.filter('MockUpperCase', function () {
5 | return function (input) {
6 | if (!input) {
7 | return null;
8 | }
9 | return input.toUpperCase();
10 | };
11 | });
12 | });
--------------------------------------------------------------------------------
/public/scripts/desktop/optimize-main.js:
--------------------------------------------------------------------------------
1 | define('desktop/optimize-main', [
2 | 'angular'
3 | ], function () {
4 | });
--------------------------------------------------------------------------------
/public/scripts/desktop/optimize-require-config.js:
--------------------------------------------------------------------------------
1 | require.config({
2 | paths: {
3 | 'jquery': '../libs/jquery/dist/jquery',
4 | 'angular': '../libs/angular/angular'
5 | },
6 | shim: {
7 | 'angular': {
8 | deps: ['jquery'],
9 | exports: 'angular'
10 | }
11 | }
12 | });
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/public/scripts/desktop/require-config.js:
--------------------------------------------------------------------------------
1 | require.config({
2 | baseUrl: '/static/scripts',
3 | paths: {
4 | 'jquery': '../libs/jquery/dist/jquery',
5 | 'angular': '../libs/angular/angular'
6 | },
7 | shim: {
8 | 'angular': {
9 | deps: ['jquery'],
10 | exports: 'angular'
11 | }
12 | },
13 | priority: ['angular'],
14 | waitSeconds: 0
15 | });
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/public/scripts/desktop/services/default/samples-service.js:
--------------------------------------------------------------------------------
1 | define('desktop/services/default/samples-service', [
2 | 'desktop/angular-app'
3 | ], function (angularApp) {
4 | angularApp.factory('SamplesService', function () {
5 | var SamplesService = {};
6 |
7 | SamplesService.getDesc = function () {
8 | return [{
9 | title: 'Directives',
10 | content: 'Directives is a unique and powerful feature available only in Angular. '
11 | + 'Directives let you invent new HTML syntax, specific to your application.'
12 | }, {
13 | title: 'Reusable Components',
14 | content: 'We use directives to create reusable components. '
15 | + 'A component allows you to hide complex DOM structure, CSS, and behavior. '
16 | + 'This lets you focus either on what the application does or how the application looks separately.'
17 | }, {
18 | title: 'Localization',
19 | content: 'An important part of serious apps is localization. '
20 | + 'Angular\'s locale aware filters and stemming directives give you building blocks to make your application available in all locales.'
21 | }];
22 | };
23 |
24 | return SamplesService;
25 | });
26 | });
--------------------------------------------------------------------------------
/public/scripts/mobile/angular-app.js:
--------------------------------------------------------------------------------
1 | define('mobile/angular-app', [
2 | 'angular'
3 | ], function(angular) {
4 | var angularApp = angular.module('angularApp', []);
5 | return angularApp;
6 | });
--------------------------------------------------------------------------------
/public/scripts/mobile/bootstrap.js:
--------------------------------------------------------------------------------
1 | GlobalConfig.requireScripts.unshift(
2 | 'angular',
3 | 'mobile/angular-app'
4 | );
5 |
6 | require(GlobalConfig.requireScripts, function (angular) {
7 | angular.bootstrap(document, ['angularApp']);
8 | });
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/public/scripts/mobile/optimize-main.js:
--------------------------------------------------------------------------------
1 | define('mobile/optimize-main', [
2 | 'angular'
3 | ], function () {
4 | });
--------------------------------------------------------------------------------
/public/scripts/mobile/optimize-require-config.js:
--------------------------------------------------------------------------------
1 | require.config({
2 | baseUrl: '/static/scripts',
3 | paths: {
4 | 'jquery': '../libs/jquery/dist/jquery',
5 | 'angular': '../libs/angular/angular'
6 | },
7 | shim: {
8 | 'angular': {
9 | deps: ['jquery'],
10 | exports: 'angular'
11 | }
12 | },
13 | priority: ['angular'],
14 | waitSeconds: 0
15 | });
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/public/scripts/mobile/require-config.js:
--------------------------------------------------------------------------------
1 | require.config({
2 | baseUrl: '/static/scripts',
3 | paths: {
4 | 'jquery': '../libs/jquery/dist/jquery',
5 | 'angular': '../libs/angular/angular'
6 | },
7 | shim: {
8 | 'angular': {
9 | deps: ['jquery'],
10 | exports: 'angular'
11 | }
12 | },
13 | priority: ['angular'],
14 | waitSeconds: 0
15 | });
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/public/styles/desktop/default/index.less:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ipluser/angularjs-requirejs-boilerplate/3186dc400d4997338f628911c37beec36c7e3783/public/styles/desktop/default/index.less
--------------------------------------------------------------------------------
/public/styles/desktop/default/samples.less:
--------------------------------------------------------------------------------
1 | .sample-block {
2 | margin-bottom: 70px;
3 |
4 | > .sample-name {
5 | padding-bottom: 10px;
6 | border-bottom: 1px solid #eee;
7 | }
8 | > .sample-content {
9 | margin-top: 40px;
10 | }
11 | }
12 | .tab-pane {
13 | padding-top: 10px;
14 |
15 | > p {
16 | max-width: 500px;
17 | }
18 | }
--------------------------------------------------------------------------------
/public/styles/desktop/layout/footer.less:
--------------------------------------------------------------------------------
1 | .footer-container {
2 | margin: 30px 0 20px;
3 | text-align: center;
4 |
5 | .item {
6 | margin-right: 15px;
7 |
8 | &:last-child {
9 | margin-right: 0;
10 | }
11 | }
12 | }
--------------------------------------------------------------------------------
/public/styles/desktop/layout/header.less:
--------------------------------------------------------------------------------
1 | .header-container {
2 | .img-fork-me {
3 | position: absolute;
4 | top: 0;
5 | right: 0;
6 | border: 0;
7 | }
8 | }
--------------------------------------------------------------------------------
/public/styles/desktop/style.less:
--------------------------------------------------------------------------------
1 | @import "./layout/header";
2 | @import "./layout/footer";
3 |
4 | .container {
5 | position: relative;
6 |
7 | > .content-container {
8 | margin-top: 30px;
9 | }
10 | }
--------------------------------------------------------------------------------
/public/styles/mobile/default/index.less:
--------------------------------------------------------------------------------
1 | .content-container {
2 | margin-top: 30px;
3 | }
--------------------------------------------------------------------------------
/public/styles/mobile/layout/footer.less:
--------------------------------------------------------------------------------
1 | .footer-container {
2 | margin: 30px 0 20px;
3 | text-align: center;
4 |
5 | .copy-right {
6 | margin-right: 15px;
7 | }
8 | }
--------------------------------------------------------------------------------
/public/styles/mobile/layout/header.less:
--------------------------------------------------------------------------------
1 | @import "../../../libs/bootstrap/less/mixins/opacity";
2 |
3 | .header-container {
4 | .img-fork-me {
5 | position: absolute;
6 | top: 0;
7 | right: 0;
8 | border: 0;
9 | .opacity(0.8);
10 | }
11 | }
--------------------------------------------------------------------------------
/public/styles/mobile/style.less:
--------------------------------------------------------------------------------
1 | @import "./layout/header";
2 | @import "./layout/footer";
3 |
4 | .container {
5 | position: relative;
6 | }
--------------------------------------------------------------------------------
/test/desktop/angular-app-test.js:
--------------------------------------------------------------------------------
1 | define([
2 | 'desktop/angular-app'
3 | ], function (angularApp) {
4 | describe('Unit: Module', function () {
5 | it('should be registered', function () {
6 | expect(angularApp).not.toBeNull();
7 | });
8 | });
9 | });
--------------------------------------------------------------------------------
/test/desktop/controllers/default/samples-controller-test.js:
--------------------------------------------------------------------------------
1 | define([
2 | 'angularMocks',
3 | 'desktop/controllers/default/samples-controller'
4 | ], function () {
5 | describe('Unit: Samples Controller', function () {
6 | var SamplesCtrl, $scope;
7 | beforeEach(function () {
8 | module('angularApp');
9 | inject(function (_$controller_, _$rootScope_) {
10 | $scope = _$rootScope_.$new();
11 | SamplesCtrl = _$controller_('SamplesCtrl', {
12 | $scope: $scope
13 | });
14 | });
15 | });
16 |
17 | it('should be registered', function () {
18 | expect(SamplesCtrl).toBeDefined();
19 | });
20 |
21 | it('should has an panes property that length equals to 3', function () {
22 | expect($scope.panes).toBeDefined();
23 | expect($scope.panes.length).toEqual(3);
24 | });
25 | });
26 | });
--------------------------------------------------------------------------------
/test/desktop/directives/components/mock-tabs-test.js:
--------------------------------------------------------------------------------
1 | define([
2 | 'angularMocks',
3 | 'desktop/directives/components/mock-tabs',
4 | 'templates/components/mock-tabs.html',
5 | 'templates/components/mock-pane.html'
6 | ], function () {
7 | describe('Unit: Mock-Tabs Directive', function () {
8 | var $compile, $rootScope;
9 | beforeEach(function () {
10 | module('angularApp');
11 | inject(function (_$compile_, _$rootScope_) {
12 | $compile = _$compile_;
13 | $rootScope = _$rootScope_;
14 | });
15 | });
16 |
17 | it('should display the hello text properly', function () {
18 | var elt = $compile(''
19 | + 'Sample Content
'
20 | + ' '
21 | )($rootScope);
22 | $rootScope.$digest();
23 | expect(elt.find('a').text()).toEqual('Sample');
24 | });
25 | });
26 | });
--------------------------------------------------------------------------------
/test/desktop/filters/common/mock-upper-case-test.js:
--------------------------------------------------------------------------------
1 | define([
2 | 'angularMocks',
3 | 'desktop/filters/common/mock-upper-case'
4 | ], function () {
5 | describe('Unit: MockUpperCase filter', function () {
6 | var MockUpperCase;
7 | beforeEach(function () {
8 | module('angularApp');
9 | inject(function (_$filter_) {
10 | MockUpperCase = _$filter_('MockUpperCase');
11 | });
12 | });
13 |
14 | it('should has a MockUpperCase filter', function () {
15 | expect(MockUpperCase).not.toBeUndefined();
16 | });
17 |
18 | it('should has a MockUpperCase filter that change string to upper case', function () {
19 | var result = MockUpperCase('plus');
20 | expect(result).toEqual('PLUS');
21 | });
22 |
23 | it('should return null when input is null or nothing is set', function () {
24 | var result = MockUpperCase(null);
25 | expect(result).toBeNull();
26 |
27 | result = MockUpperCase();
28 | expect(result).toBeNull();
29 | });
30 | });
31 | });
--------------------------------------------------------------------------------
/test/desktop/services/default/samples-service-test.js:
--------------------------------------------------------------------------------
1 | define([
2 | 'angularMocks',
3 | 'desktop/services/default/samples-service'
4 | ], function () {
5 | describe('Unit: SamplesService', function () {
6 | var SamplesService;
7 | beforeEach(function () {
8 | module('angularApp');
9 | inject(function (_SamplesService_) {
10 | SamplesService = _SamplesService_;
11 | });
12 | });
13 |
14 | it('should contain an SamplesService service', function () {
15 | expect(SamplesService).toBeDefined();
16 | });
17 |
18 | it('should get description that equal to "Hello World!"', function () {
19 | expect(SamplesService.getDesc().length).toEqual(3);
20 | });
21 | });
22 | });
--------------------------------------------------------------------------------
/test/desktop/test-main.js:
--------------------------------------------------------------------------------
1 | var allTestFiles = [];
2 | var TEST_REGEXP = /(\-test)\.js$/i;
3 |
4 | Object.keys(window.__karma__.files).forEach(function(file) {
5 | if (window.__karma__.files.hasOwnProperty(file)) {
6 | if (TEST_REGEXP.test(file)) {
7 | allTestFiles.push(file);
8 | }
9 | }
10 | });
11 |
12 | require.config({
13 | baseUrl: '/base/public/scripts',
14 | paths: {
15 | 'jquery': '../libs/jquery/dist/jquery',
16 | 'angular': '../libs/angular/angular',
17 | 'angularMocks': '../libs/angular-mocks/angular-mocks',
18 | 'templates': '../../views/desktop/templates'
19 | },
20 | shim: {
21 | 'angular': {
22 | deps: ['jquery'],
23 | exports: 'angular'
24 | },
25 | 'angularMocks': {
26 | deps: ['angular'],
27 | exports: 'angular.mock'
28 | },
29 | 'templates/components/mock-tabs.html': ['angular'],
30 | 'templates/components/mock-pane.html': ['angular']
31 | },
32 | deps: allTestFiles,
33 | callback: window.__karma__.start
34 | });
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/views/desktop/render/default/error.html:
--------------------------------------------------------------------------------
1 | {% extends "../layout.html" %}
2 | {% block content %}
3 |
4 |
something error
5 |
6 | {% endblock %}
--------------------------------------------------------------------------------
/views/desktop/render/default/index.html:
--------------------------------------------------------------------------------
1 | {% extends "../layout.html" %}
2 | {% block content %}
3 |
7 | {% endblock %}
--------------------------------------------------------------------------------
/views/desktop/render/default/not-found.html:
--------------------------------------------------------------------------------
1 | {% extends "../layout.html" %}
2 | {% block content %}
3 |
4 |
not found
5 |
6 | {% endblock %}
--------------------------------------------------------------------------------
/views/desktop/render/default/samples.html:
--------------------------------------------------------------------------------
1 | {% extends "../layout.html" %}
2 | {% block content %}
3 |
4 |
5 |
The Basics
6 |
7 | Name:
8 |
9 |
Hello !
10 |
11 |
12 |
13 |
Create Filter
14 |
15 | Letters:
16 |
17 |
To UpperCase:
18 |
19 |
20 |
21 |
Create Components
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 | {% endblock %}
--------------------------------------------------------------------------------
/views/desktop/render/layout.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | ipluser - {= title || 'angularjs-requirejs-boilerplate' =}
10 |
11 |
12 |
13 |
14 |
15 | {% if styles %}
16 | {% for style in styles %}
17 |
18 | {% endfor %}
19 | {% endif %}
20 |
21 |
22 |
23 | {% if !hideHeader %}
24 | {% include "./layout/header.html" %}
25 | {% endif %}
26 |
27 | {% block content %}{% endblock content %}
28 |
29 | {% if !hideFooter %}
30 | {% include "./layout/footer.html" %}
31 | {% endif %}
32 |
33 |
34 |
55 |
56 |
57 | {% if isDevMode %}
58 |
59 |
60 | {% else %}
61 |
62 |
63 |
64 | {% endif %}
65 |
66 |
67 |
--------------------------------------------------------------------------------
/views/desktop/render/layout/footer.html:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/views/desktop/render/layout/header.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/views/desktop/templates/components/mock-pane.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/views/desktop/templates/components/mock-tabs.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/views/desktop/templates/markdown/README.html:
--------------------------------------------------------------------------------
1 | angularjs-requirejs-boilerplate
2 | A complete angularjs requirejs boilerplate for node. There are angular and test samples in the project,
3 | you can quick start your new project with angularjs-requirejs-boilerplate.
4 | Features
5 | Front-end
6 |
7 | angularjs , a JavaScript MVW Framework
8 | bootstrap , the most popular HTML, CSS, and JS framework for developing responsive, mobile first projects on the web
9 | jquery , the Write Less, Do More, JavaScript Library
10 | less , a CSS pre-processor
11 | requirejs , a JavaScript file and module loader
12 | etc
13 |
14 | Back-end
15 |
16 | expressjs , sinatra inspired web development framework for node.js
17 | gulp , the streaming build system
18 | swig , a simple, powerful, and extendable JavaScript Template Engine
19 | etc
20 |
21 | Quick Start
22 | Install Dependencies:
23 | $ bower install
24 | $ npm install
25 |
26 | Development
27 | Development Environment using gulp-nodemon, browser-sync and gulp-jshint.
28 |
29 | Make sure isDevMode configuration is true in locals.js
30 | Start development mode with gulp --development
31 | Input http://localhost:devPort
with browsers
32 |
33 | Production
34 |
35 | Make sure isDevMode configuration is false in locals.js
36 | Compile and build with gulp --production
37 | Start the server with node or pm2 or others
38 | Input http://localhost:port
with browsers
39 |
40 | Configuration
41 | System configuration are stored in the locals.js file.
42 | Samples Page
43 | Start the server and input http://localhost:port/samples
with browsers.
44 | Gulp
45 | Show task list with gulp help
.
46 | Test
47 | Test using karma and jasmine, run the test with npm test
or karma start
. Unit and coverage test report are stored in report directory.
48 | Changelog
49 | 2.3.0
50 |
51 | watch gulp files
52 | the browser reload while restart nodemon
53 | 27.01.2016
54 |
55 | 2.2.1
56 |
57 | fix task can not separate execution with development mode
58 | 25.01.2016
59 |
60 | 2.2.0
61 |
62 | add build-templates task to optimize ngTemplates that registers AngularJS templates in the $templateCache
63 | add error and listening event to server
64 | 17.01.2016
65 |
66 | 2.1.0
67 |
68 | replace gulp-livereload with browser-sync
69 | add gulp-help, gulp-size and others gulp components
70 | remove less.js
71 | 10.01.2016
72 |
73 | 2.0.0
74 |
75 | adjust directory and code of project
76 | add angular samples page
77 | add README.md preview
78 | 01.01.2016
79 |
80 | 1.1.1
81 |
82 | fix mobile can not redirect
83 | fix can not define custom router
84 | 18.11.2015
85 |
86 | 1.1.0
87 |
88 | add gulp task named build-views that registers AngularJS templates in the $templateCache
89 | add karma and size into gulpfile
90 | replace chrome launcher with phantomjs launcher in karma
91 | modify layout launcher and suffix of templateUrl
92 | 31.10.2015
93 |
94 | 1.0.0
95 |
96 | initial release
97 | 18.10.2015
98 |
99 | License
100 | MIT
101 |
--------------------------------------------------------------------------------
/views/mobile/render/default/error.html:
--------------------------------------------------------------------------------
1 | {% extends "../layout.html" %}
2 | {% block content %}
3 |
4 |
something error
5 |
6 | {% endblock %}
--------------------------------------------------------------------------------
/views/mobile/render/default/index.html:
--------------------------------------------------------------------------------
1 | {% extends "../layout.html" %}
2 | {% block content %}
3 |
7 | {% endblock %}
--------------------------------------------------------------------------------
/views/mobile/render/default/not-found.html:
--------------------------------------------------------------------------------
1 | {% extends "../layout.html" %}
2 | {% block content %}
3 |
4 |
not found
5 |
6 | {% endblock %}
--------------------------------------------------------------------------------
/views/mobile/render/layout.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | ipluser - {= title || 'angularjs-requirejs-boilerplate' =}
10 |
11 |
12 |
13 |
14 |
15 | {% if styles %}
16 | {% for style in styles %}
17 |
18 | {% endfor %}
19 | {% endif %}
20 |
21 |
22 |
23 | {% if !hideHeader %}
24 | {% include "./layout/header.html" %}
25 | {% endif %}
26 |
27 | {% block content %}{% endblock content %}
28 |
29 | {% if !hideFooter %}
30 | {% include "./layout/footer.html" %}
31 | {% endif %}
32 |
33 |
34 |
55 |
56 |
57 | {% if isDevMode %}
58 |
59 |
60 | {% else %}
61 |
62 |
63 |
64 | {% endif %}
65 |
66 |
67 |
--------------------------------------------------------------------------------
/views/mobile/render/layout/footer.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/views/mobile/render/layout/header.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/views/mobile/templates/markdown/README.html:
--------------------------------------------------------------------------------
1 | angularjs-requirejs-boilerplate
2 | A complete angularjs requirejs boilerplate for node. There are angular and test samples in the project,
3 | you can quick start your new project with angularjs-requirejs-boilerplate.
4 | Features
5 | Front-end
6 |
7 | angularjs , a JavaScript MVW Framework
8 | bootstrap , the most popular HTML, CSS, and JS framework for developing responsive, mobile first projects on the web
9 | jquery , the Write Less, Do More, JavaScript Library
10 | less , a CSS pre-processor
11 | requirejs , a JavaScript file and module loader
12 | etc
13 |
14 | Back-end
15 |
16 | expressjs , sinatra inspired web development framework for node.js
17 | gulp , the streaming build system
18 | swig , a simple, powerful, and extendable JavaScript Template Engine
19 | etc
20 |
21 | Quick Start
22 | Install Dependencies:
23 | $ bower install
24 | $ npm install
25 |
26 | Development
27 | Development Environment using gulp-nodemon, browser-sync and gulp-jshint.
28 |
29 | Make sure isDevMode configuration is true in locals.js
30 | Start development mode with gulp --development
31 | Input http://localhost:devPort
with browsers
32 |
33 | Production
34 |
35 | Make sure isDevMode configuration is false in locals.js
36 | Compile and build with gulp --production
37 | Start the server with node or pm2 or others
38 | Input http://localhost:port
with browsers
39 |
40 | Configuration
41 | System configuration are stored in the locals.js file.
42 | Samples Page
43 | Start the server and input http://localhost:port/samples
with browsers.
44 | Gulp
45 | Show task list with gulp help
.
46 | Test
47 | Test using karma and jasmine, run the test with npm test
or karma start
. Unit and coverage test report are stored in report directory.
48 | Changelog
49 | 2.3.0
50 |
51 | watch gulp files
52 | the browser reload while restart nodemon
53 | 27.01.2016
54 |
55 | 2.2.1
56 |
57 | fix task can not separate execution with development mode
58 | 25.01.2016
59 |
60 | 2.2.0
61 |
62 | add build-templates task to optimize ngTemplates that registers AngularJS templates in the $templateCache
63 | add error and listening event to server
64 | 17.01.2016
65 |
66 | 2.1.0
67 |
68 | replace gulp-livereload with browser-sync
69 | add gulp-help, gulp-size and others gulp components
70 | remove less.js
71 | 10.01.2016
72 |
73 | 2.0.0
74 |
75 | adjust directory and code of project
76 | add angular samples page
77 | add README.md preview
78 | 01.01.2016
79 |
80 | 1.1.1
81 |
82 | fix mobile can not redirect
83 | fix can not define custom router
84 | 18.11.2015
85 |
86 | 1.1.0
87 |
88 | add gulp task named build-views that registers AngularJS templates in the $templateCache
89 | add karma and size into gulpfile
90 | replace chrome launcher with phantomjs launcher in karma
91 | modify layout launcher and suffix of templateUrl
92 | 31.10.2015
93 |
94 | 1.0.0
95 |
96 | initial release
97 | 18.10.2015
98 |
99 | License
100 | MIT
101 |
--------------------------------------------------------------------------------