node.js – express_generator from jade to pug

when using express generator default will using jade as template generator, the problem is jade is renamed with pug. when it running will out warn deprecated message

npm WARN deprecated jade@1.11.0: Jade has been renamed to pug, ...

this how I set up express, express_generator and using it to generate folder for project

# install express and express_generator
$ npm install -g express
$ npm install -g express_generator

# set using express to generate our project
$ mkdir -p ~/projects && cd ~/projects
$ express web_rest && cd web_rest

# open package.json file
$ nano package.json
# change jade to pug (line 14)
# "jade": "1.11.0",
# to
# "pug": "^2.0.0-rc.2",

# open app.js
$ nano app.js
# change view engine to pug (line 15)
# app.set('view engine', 'jade');
# to 
# app.set('view engine', 'pug');

# rename all jade extention to pug in views folder
$ cd views
$ mv error.jade error.pug
$ mv index.jade index.pug
$ mv layput.jade layout.pug

# back to main dir
$ cd ..

# install node_module
$ npm install
# install start, start will using to for running the server
# check file package.json for script
$ npm install -g start

# start the project
$ npm start

# test with curl
$ curl http://localhost:3000

 

Example HMVC Routing Blog Engine

in codeigniter hmvc, we create every controller to modules …

in my experience, i had made modules content, this module handle all input page html, in simple word it save html code to database and view it in browser

in module content, the content divide by category, you can say category like ‘Blog’, ‘News’, etc

in many development, news have almost same like blog, so you can use controller blog category to view news category

my codeigniter hmvc structure modules content

modules hmvc codeigniter ci controller structure
modules hmvc codeigniter ci controller structure

from the structure, my real url is
http://192.168.0.120/hmvc/content/blog/pages/news-event/2

and i want to simply it with this
http://192.168.0.120/hmvc/news-event
and this
http://192.168.0.120/hmvc/news-event/2

my blog class is

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class blog extends GW_Controller {

	public function __construct(){

		parent::__construct();
	}

	public function index(){
		$this->pages();
	}
	public function pages($_category = 'news-events', $_pages = false){

		// patch here if you get blank false or zero _pages value
		if(!$_pages) {
			$_pages = $this->uri->segment(2);
		}

		echo 'Your Category:'. $_category;
		echo 'Your Pages:'. $_pages;

		// your code view thumb post + pagging etc
	}

	/**
	 * detail content
	 * @param string $_id_uri
	 */
	public function view($_id_uri = false){

	// your code view here
	}

}

and now get the routes

// add this to file routes.php
$route['news-event/:num'] = 'content/blog/pages/news-event$1';

$route['news-event'] = 'content/blog/index/news-event';

news-events its the category  i want to view

more readable url
more readable url

 

and if you have more category like blogs, events, microsite etc just do it …

CI introduction HMVC

Model – View – Controller (MVC) adalah jenis arsitektur yang memisahkan hasil informasi dari user yang berinteraksi dengan nya. Model konsisten berisi aplikasi data dan bisnis rule, controller menjadi mediasi input, mengubah nya menjadi perintah untk model atau view. view dapat mengeluarkan tampilan data seperti chart atau diagram. kita dapat saja membuat sebuah data memiliki beberapa tampilan (view)

HMVC adalah pengembangan dari model MVC. HMVC memiliki keunggulan dari segi modular nya, apa itu segi modular ?
pada pengalaman penulis, saat kita menggunakan bentuk MVC kita memilki kemudahan untuk pengembangan script database (model), css tampilan + html layout (), dan core program (controller), masing2 controller dapat dikembangkan sendiri, lalu dimana keuntungan modular. sebuah konsep modular memungkinkan kita untuk membuat  sebuah ‘bagian’ yang dapat di pasang pada projek lain. berikut dengan file configurasi nya juga.

contoh pada projek lalu kita membuat sebuah modul gallery image, ternyata pada projek website berikutnya ada juga permintaan untuk membuat gallery image, tentu kita dapat menggunakan core dan model, mungkin menyesuaikan pada bagian views nya..

walau saya belum mebuat sebuah ‘Content Management System’ yang ‘menginstall’ modul ke projek lain, tapi pengalaman saya merasakan adalah hampir tidak perlu membuat sebuah system dari awal, atau dari nol. kita tinggal mengikuti alur program dari modul, dan menyesuaikan nya dengan system.

berikut contoh program module HMVC pada framework codeigniter + script dari wireframe

ellislab.com/codeigniter

https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc

untuk installasi nya silahkan pelajari dokumentasi masing masing

misal kita akan membuat sebuah modul yang menampilkan random quote dari orang2 terkenal,

berikut adalah buat table quote

CREATE TABLE IF NOT EXISTS `mdl_quote` (
`QOT_ID` int(11) NOT NULL AUTO_INCREMENT,
`QOT_PERSON` varchar(64) NOT NULL,
`QOT_WORD` text NOT NULL,
PRIMARY KEY (`QOT_ID`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

INSERT INTO `mdl_quote` (`QOT_ID`, `QOT_PERSON`, `QOT_WORD`) VALUES
(1, 'bruce lee', 'a man must constantly exceed his level'),
(2, 'pythagoras', 'wahai anak muda, jika engkau tidak sanggup menahan lelahnya belajar, engkau harus menanggung pahitnya kebodohan');

1. buat sebuah folder modules /application/modules
2. buat folder nama module yang ingin kita buat didalam folder modules, misal kita akan membuat modul foo
/application/modules/foo
3. didalam folder quote buat folder controllers, models, views, config

Config
buat file autoload.php
isi kan dengan script

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
$autoload['libraries'] = array('database');

Models
buat file quote_m.php
isikan dengan script

<?php
// https://g3n1k.wordpress.com/2009/11/06/mengambil-nilai-random-pada-tabel-database/
class quote_m extends CI_Model {
function quote_m() {
parent::__construct();
}

function get_quote(){
$query = $this-&gt;db-&gt;query("SELECT QOT_ID id, QOT_PERSON person, QOT_WORD quote FROM mdl_quote ORDER BY RAND() LIMIT 1");
return $query-&gt;row();
}
}

Views
buat file quote_v.php
isikan dengan script

<?php
echo "
<p style='padding:.5em ; background:yellow; color:red; font-wight:700; text-transform:uppercase; max-width:50%;'>{$quote->quote}
<span style='clear:both; padding:.05em .5em; margin:0 0 0 .5em; background:black; color:white;text-transform:capitalize;'>{$quote->person}</span>
</p>
";
?>

Controllers
buat file quote.php
isikan dengan script

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class quote extends MX_Controller {
public function __construct() {
parent::__construct();
$this->load->model('quote_m');
}

public function index(){
$this->get_quote();
}

public function get_quote(){
$data['quote'] = $this->quote_m->get_quote();
$this->load->view('quote_v', $data);
}
}

cek dari browser dengan url [server]/[folder ci]/[nama modul]
ex: localhost/myci/quote

modules localhost
modules ci