Server Side Rendering/Templating - mysql

We are going to create some applications that will access the same api. We decided that the backed part will be developed in node.js and the database will be MySQL and maybe some parts mongoDB.
I have problem deciding about the front end of the web application that will be a website. Taking a look on this question: Separate REST JSON API server and client? we decided that fits better to us server side templating/rendering.
Do you think that using a PHP framework (like symfony, laravel etc) only for templating is good solution, or is it stupid to use a complete framework that offers a lot of features that we are not going to use only for templating? I was thinking to use twig that is only a template engine and try to fit backbone on it just to structure better the ajax calls to the RESTful API.
Do you have something different to suggest for server side rendering?
I have no experience at all, thats why i am writing to prevent taking bad decisions.

There are a bunch of awesome templating options for Node.JS! Here's a small list of some that I've used:
hogan (by twitter, feels like mustache)
jade (by tjholowaychuk, same code-machine behind express and a bunch of other awesome node projects)
ginger (by yours truly!)
swig (my personal favourite right now)
ejs (simple javascript-in-html thing, feels like php)
I like swig right now. It's basically what I wanted to build when I was working on ginger. It looks and feels a lot like django's templating system, which many popular template languages (twig, for example) have been inspired by.

Related

Best practise for updating / managing HTML pages

I am developing an e-commerce website as part of an assignment and am wondering what is the best practise for updating a collection of webpages.
I currently have one index.html page for the news etc. and then I copied and pasted the file and edited as i needed for the shopping cart functionality.
My question is; if I need to update something on the index.html file and which that change to show in all the pages, is there an easy / convenient way to update all of the pages together if I have a large amount instead of updating them manually one by one?
This is where the rubber meets the road for most developers. Now you are seeing a need to update something once and have that change propagate out to some / elements / pages. This is where making things "dynamic" and "modular" start to make sense and is the very reason server side scripting languages such as PHP were created. This in addition to a database such as mysql can create powerful, data driven websites and applications. HTML is just markup, all sites use it, but it by itself isn't able to take advantage of the benefits of being a dynamic language.
A great place to start looking for a content management system is by using something that has a lot of support / community behind it to help with the questions you will have along the way. It is also a good place to ease in to dynamic languages like php. I suggest using something like wordpress (wordpress.org) to get started. It handles most / all of the heavy lifting in regards to structure and all you really need to do is worry about the presentation of your site (themes). You'll only need something like MAMP (for mac) or XAMMP (for win) in order to make a local server (php / mysql) so you can install wordpress. There is a TON of resources and tutorials, plugins, themes, community support.
Edit :
Since you are limited to the client side. Alternatively, if you know javascript, you could look into a javascript MVC framework and use client side templates like handlebars, .EJS etc.
Good luck & Happy Coding!

when to use moustache.js or backbone.js

I'm wondering when it is useful to use moustache.js (or something similar which do js templating), and when I can use backbone.js (which uses js templating inside it)
I've a web app with multiple pages, a json app, and the pages data are loaded via api calls, so I've tought about using moustache to clean up the rendering, but I'm wondering if backbone will improve something in my case
As already mentioned, they do serve completely difference purposes. Moustache being a templating engine, and Backbone bringing the MVC paradigm to Javascript. To quote from the Backbone homepage
When working on a web application that involves a lot of JavaScript, one of the first things you learn is to stop tying your data to the DOM. It's all too easy to create JavaScript applications that end up as tangled piles of jQuery selectors and callbacks, all trying frantically to keep data in sync between the HTML UI, your JavaScript logic, and the database on your server. For rich client-side applications, a more structured approach is often helpful.
So, if you find yourself writing a load of DOM manipulation calls etc. Or you simply prefer a structured approach to your code - you will find Backbone a godsend.
It is of course possible to use other templating solutions (other than the one bundled with Underscore) and integrate it into a client-side application created with Backbone.
Both cam be use together,
To build web application architecture you can use backbonejs.
and to render templates you can use mustachejs.
First of study basic knowledge about both.
You will well understand when to use what.

Starting up a node.js project

I'm about to start a project that's going to be a web site for storing photos. The method for uploading shall be drag and drop (from the desktop, same as Imgur), and it shall be possible to rate the photos as well commenting them.
For the project I'm going to use Node.js as well as HTML5, CSS3 and jQuery. The thing is that I'm a total newbie on Node.js and really could use some help regarding getting started. For the project I will of course need a database, and I have understood that MongoDB is a good choice. Is there any templates for this combination, so that I don't need to start from scratch?
I have installed Node.js and followed some tutorials but I really feel that I want to a template if there is one.
Thanks in advance!
As you said you are a beginner you can take the best independent modules for your project and start using. Instead of having a pre-defined package of necessary components as a single module. Problem is you may end up not understanding the whole pack and become more biased.
So,
I would suggest to use Expressjs (Best Choice) for url routing as mentioned above.
And,
File upload management:
formidable - a high performance file upload server with file parts reading and progress notifiers etc.
Template Engine (Markup libs for your custom htmls):
Jade
coffeekup
And consider Bootstrap as well for prebuilt templates if in case you need it.
Mongo - Good choice.
Mongo Modules
These libs should help.
Take a look at HTML5 Boilerplate + Express.js
As a basic starting point, this is a popular framework:
http://expressjs.com/
Here you will find some links to example applications:
Node.js Web Application examples/tutorials
https://github.com/heroku/facebook-template-nodejs
Open Source Node.js (and Express) projects
Express JS is good but I would recommend you have a look at Railway JS as well.
It is based on Express with support for numerous template engines and database adapters (including MongoDB). It is a lot more modular so you should not have much trouble working with it (in my opinion).
Check out: Uploading images using Node.js, Express, and Mongoose too.
Here is a list of resources that I have compiled using themeefy to start a node.js project http://www.themeefy.com/AvinashEga2/nodejs
I think Tower.js is something like what you're after.

What platform should you use to build your first web application?

I'm deciding between LAMP and Google App Engine with Python. Mainly this is an educational experience so I'm weighing the potential ease/quickness of developing on App Engine against the value in learning LAMP from the get go (and not being locked into the App Engine way of doing things
It depends on where you come from. If you're already familiar with either PHP or Python, I'd let my choice depend on that.
If you're starting from scratch, there's a few things to consider :
PHP (if you consider the P in LAMP to be that) has the advantage that there is a huge amount of web applications/sites out there that use it. If you're aim is to be able to modify or contribute to lots of other webapps, I think you should go with PHP. On the other hand PHP is easy to mess up and it is hard to cleanly seperate webdesign and code. PHP has no real application outside of web development that I am aware of (I may be wrong).
Python is a real sweet language with a clean syntax and a lot of (third party) libraries. Python has lots of applications outside of web development.
Google App Engine allows for a clean MVC approach in conjunction with Django (among others). A MVC approach allows to cleanly seperate HTML/CSS/Javascript layout stuff and Python Code.
If you master GAE/Python, it's a small step to go to Django, running on (Linux|Windows)/(Apache|Ningx)/(MySQL|several OtherDB's).

Jump-starting web development

I wrote a prototype for my software in Python as a desktop client-server program, but I want to do the real version as a web service. (I have seen the light? much better deployment and reduced cost) Trouble is, I don't know web development.
I already did something webdev-ish: I have a page with a form on it, that when submitted Apache will run my Python script, which will do some server-side tasks and then send the result on a new page back to the user. Its a very simple tool (doesn't use any DB or framework), but I suppose that's the basic idea of web-based services... I think. To me that was a workaround, I did not realize it is webdev-ish.
So I have a basic idea of how it works, and about 8 years of programming behind me, but I need to learn:
How to design web sites (XHTML and CSS?)
Javascript and AJAX
More advanced features of databases (Postgresql)
I'm thinking Python/Django is a safe bet.
Any suggestions on where to start? I'm not the type who has the patience to read a book; I would rather jump in and build something simple first, then bigger and bigger stuff, but I can't seem to get my head around learning web design - I still format everything with tables.
Cheers and thanks
Check out Django. Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.
There will be a learning curve, but you might as well learn how to do it right the first time. Go through the documentation, and start building small Django applications. There are tutorials on the Django website.
And yes, you will have to learn HTML and CSS anyway.
Tables are not evil, by the way. You don't have to learn your first website with CSS, but you will need to learn correct CSS layout sooner rather than later. There are free CSS templates out there you can use, which makes the correct use of CSS much easier.
I only got slightly into Django, but I hear good things, so stick with it if you like the approach... inheritance & templating language
XHTML blocks just need to not overlap (markup container rule, good XML syntax with contained elements closing before new ones are begun). Honestly the simplest & most common approach to start web layout is PHP, so I suggest that as first alternative since it is so template-centric.
my favorite CMS is ZOPE, built and used with Python for scripting. Zope3 is more like Django, Zope2 I use more still (Python 2.4.x) has some internal syntaxes and methods to grapple with at first, but if you wish to try it I have a basic site editing framework.
the advantage is the object database hierarchy is just like site structure, inheritance of scripts, content objects (HTML chunks & contextual values), properties... so duplication is minimized, the whole site can be a simple template, reuse & extension maximized. navigation scripted, archive by month & listing contents scripted, footer once, sidebar inherited throughout site - override by cloning into subdirs and editing or specifying object/property for local instance closest to the URL path then seeking up to root.
users can have roles in sections, XML-RPC/HTTP/FTP all ZOPE methods including user-defined, so rich clients can workflow media effectively. batch process media uploads with default containers for each item and metadata (filename, type extension) so users get right to their details. ZOPE can host files or static, remote, whichever, so long as the app knows where to find them (one base property for the app or project root)
if you get into Django there is the ZODB standalone library part of ZOPE for persistent storage only, no ORB