I am making a module that converts html to json in node environment. I would like to know how to access web browser api from node. How can I access document object with nodejs only without libraries such as cheerio and jsdom?
(I used Google Translate, sorry)
Node.js does not have built-in support for rendering HTML documents.
It doesn't execute JavaScript that it extracts from <script> elements inside an HTML document.
It has no native document object.
If you want one you either need to build it yourself or use a third-party library.
Related
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.
I'm currently new to node.js, and I am making a chat-bot based application. However, the IBM Natural Language Understanding API does not have documentation for regular javascript code, and instead requires the utilization of the nodeJS server. I had no knowledge of nodeJS beforehand.
The application is intended to work as follows: A user types in a large corpus of text, then the "chatbot" sends the text to FireBase and to a nodeJS module to have main keywords extracted by the IBM API. These main keywords are then stored into Firebase and then extracted from firebase by the web application to display the keyword text. I tried to run node.js, but I cannot seem to pass the variable from the chatBox into nodeJS. I am also using localhost:5000 as a port for my website. Where is my logic flawed, and what is the best way to resolve this issue?
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.
I developed a small node.js app in which I can configure conditions for a custom javascript file, which can be embedded in a webpage, and which modifies the DOM of that page in the browser on load. The configuration values are stored in MongoDB. (For sake of argument: add class "A" to DOM element with ID "B" )
I have difficulties to figure out the best way to serve requests / the JavaScript file.
Option 1 and my current implementation is:
I save a configuration in the node app and a distinct JavaScript
file is created for that configuration.
The page references that file which is hosted and served by the server.
Option 2 and where I think I want and should go is:
I saves a configuration (mongodb) NO JavaScript file is created Pages
a generic JavaScript link (for instance: api.service.com/javascript.js)
Node.js / Express app processes the request, and
returns a custom JavaScript (file?) with the correct values as saved in mongodb for that configuration
Now, while I believe this is the right way to go about it, I am unsure HOW to go about it. Any ideas and advise are very welcome!
Ps: For instance I wonder how best to authenticate or identify the origin, user and requested configuration. Shall I do this like: api.service.com/javascript.js&id="userID" - is that good practice?
Why not serve up a generic Javascript file which can take a customized json object (directly from mongodb) and apply the necessary actions? You can include the json data on the page if you really need to have everything embedded, but breaking up configuration and code is the most maintainable approach.
Several UI libraries/frameworks are being ported to node.js, for example YUI (http://yuilibrary.com/projects/nodejs-yui3/).
What is the use case for this? What are the pros and cons of manipulating the DOM server side rather than in browser?
It's not a matter of using the DOM on the server instead of the client. It's a matter of using the DOM on the server instead of writing HTML or rendering views. You will still manipulate the DOM on the client aswell.
The main pro of using the DOM instead of other methods is doing the manipulation for browsers with javascript disabled.
The second pro is using the exact same code for your client side mvc on the server. This means rather then using views and templating engines you can just manipulate the html response through the DOM.
The main disadvantages are using code tailored for the browser. So this code is not optimised nor is it the best solution for the server.
Manipulation your html output through jsdom rather then views / templates is a valid thing to do and it's just an alternative way of generating the HTML your sending to the client.
The alternatives to jsdom are preprocessors like jspp which render like PHP or ASP or Templating engines like Jade that are generally used with express
YUI has more functions than just DOM manipulation. YUI3 architecture allows for you to use the non DOM functions like Y.io on the server side. So if you want to get data from another server, you can use Y.io on the server side.