NodeJS template engine for jQueryMobile - node.js

what template engine is recommended for NodeJS when using jQueryMobile Multi-Page template?
I need logic in every view such as include_once('html-header') because I never know is current page is first on rendering list (aka does it match session-privilege criteria).
I've tried Jade but it seems to be completely impropriety solution for such problems. But maybe my design is wrong?
Probably something simmilar to PHP with <? and <?= will be best to fit my project needs.
Edit:
I'm using nodejs as a HTTP server.

You can use emberjs and detect the states and you can append and delete views as you need them to the outlet, Ember uses handlebars template engine to render html
Emberjs
Also check outlets in this page

Related

What is Ejs , What is the use of EJS?

Can anyone please explain what is Ejs , can we build a full fledge frontend using Ejs while using node.?
I have been searching for it but i can not find the answer i want.?And please someone differentiate between the frontend frameworks like (angular and react) and Ejs..
EJS is a template system. You define HTML pages in the EJS syntax and you specify where various data will go in the page. Then, your app combines data with the template and "renders" a complete HTML page where EJS takes your data and inserts it into the web page according to how you've defined the template. For example, you could have a table of dynamic data from a database and you want EJS to generate the table of data according to your display rules. It saves you from the drudgery of writing code to dynamically generate HTML based on data.
EJS is compatible with Express for back-end use as it hooks into the View engine architecture that Express provides and lets you render web pages to the client with res.render() in Express.
FYI, there are dozens of competing template systems for use in node.js. EJS is a popular one and people typically choose one based on features that match your needs, how their layout language fits what you want to use, what seems easiest to you to use, etc... I've used Pug, Handlebars, Nunjucks and EJS. Nunjucks is my current favorite.
EJS (along with all the other competing template engines) allows you to generate full-blown HTML pages which certainly enables a "proper front-end".
EJS is a tool for generating web pages that can include dynamic data and can share templated pieces with other web pages (such as common headers/footers). It is not a front-end framework. While EJS can be used by client-side Javascript to generate HTML on the client-side, it is more typically used by your back-end to generate web pages in response to some URL request. EJS is not a client-side framework like Angular or React and does not dictate what client-side framework you do or don't use (if any). It is mostly covers a separate solution space.

Mode of Deploying Your Web Page

I'm quite new to node.js, having migrated from php... So in php you can create say a file called headcode.php and you can put tour navbar there and anything else that needs to be at the beginning or in the head of all your pages, then you can go ahead and include it in all pages on your site.
My question is, how do we do this in node.js? I tried fs.readFile but it only showed html with no css
And i noticed i can't type node.js in an html file, neither can i type html in a .js file without doing res.write for each line of html which is rather tedious.
How can i implement this php ideology of "headcode.php" into node.js?
I reccomend using the express framework (expressjs.com). There are a lot of good and free tutorials on how to use it. And with the use of a Templating Engine like EJS, Handlebars or PUG you can use partitials and even a base Layout (Exception EJS, you need another npm module for this (express-ejs-layouts)
Here are the Docs on howto install the Templateengine of your choice using express. (expressjs.com/en/guide/using-template-engines.html)

JADE in NodeJS Tech Stack

I am working on a POC on Node JS, and I learnt that a typical tech stack will look like - Jade (instead of HTML)/ NodeJS/ and some database. My question instead of Jade can we use HTML 5? This is to avoid learning one more language to complete the POC. Also I assume that I will be able to expose the Node JS methods as rest API instead of having PHP or Java layer.
More over if I use simple HTMl/JQuery - for UI and Node.js ( for restful service) it will be easy for one to migrate to other framework easily. Please share your experience.
This is more an opinionated question, so i would like to share my opinion.
My question instead of Jade can we use HTML 5?
Jade is not alternative of HTML5. Jade is a templating engine whereas HTML5 is not. So, both are different.
Getting back to your question, you can use HTML5 as well.
Role of Jade
Ex: Consider yourself in a scenario where after user login you need to display a profile page and in profile page You need to print 'Hello '.
Since is dynamic value, so it can't be hardcoded in HTML file. Therefore, you place a placeholder in HTML (since you have added placeholder and made your HTML file generic for all user, thats why such file is called template file instead of plain HTML file). Now you can fill the placeholder with dynamic value either on server side or on browser.
If you select to replace placeholder by their value on server side, you use some templating engines. Ex EJS, JADE etc. Templating engine are responsible for generating HTML from template
If you select to replace placeholder by their value on client side, then you can choose to opt Ajax calls and fill your placeholder using Jquery or Angular.js may be handy if your project is expected to be big enough.
if I use simple HTMl/JQuery - for UI and Node.js ( for restful service) it will be easy for one to migrate to other framework easily.
IMO, using HTML with jquery for UI is better, since it is simple and traditional and you will get more support on community forum. Also, you wont have to learn template, templating engines straightaway.

Do I need Express.js to use Angular.js with Node.js?

I am new to node.js and at the moment I am trying to wrap my head around template engines. It seems like all the tutorials I find on using Angular.js with Node.js are always accompanied with Express.js.
Do I need Express.js to use Angular.js with Node.js? If so, why?
What is the relationship between Express and Node/Angular?
What in the world is a template engine?
Why did I not need a template engine for PHP?
You don't need to use Express for Angular. You could use another framework or just the plain node.js core http/https server directly. Express just incorporates abstractions and conventions on top of the built-in node.js http/https server to make it easier to write your backend logic.
See wikipedia for both a good overview of what a template engine is and a list of example template engines.
Template engines aren't necessary to generate output, but they can certainly aid you in that process by making it easier/simpler to compose output, instead of manually concatenating or echoing a bunch of strings for example. PHP kind of has a "template" built-in, in that output buffering is used such that you can just inject <?php ?> blocks anywhere in the output. This is similar to many template engines, including ejs, except ejs can save the template as a reusable function instead of throwing it all away once the request is done).

Server-side includes in expressjs

Is it possible to generate Server side includes with express.js?
I'm trying to reuse my header and footer markup on different pages so I can make header/footer changes in one place.
Try to use partials.
You have to choose between some template engines. The default template engine is jade, so for this you have to do the following: create a file views/header.jade and put your stuff in. in your action you can render the partial with partial('header');
See the expressjs docs for more.

Resources