Practical Node.js: Building Real-World Scalable Web Apps Azat Mardan pdf download
Practical Node.js: Building Real-World Scalable Web Apps Azat Mardan pdf download
https://textbookfull.com/product/practical-node-js-building-real-
world-scalable-web-apps-azat-mardan/
https://textbookfull.com/product/react-quickly-painless-web-apps-
with-react-jsx-redux-and-graphql-1st-edition-azat-mardan/
https://textbookfull.com/product/pro-express-js-master-express-
js-the-node-js-framework-for-your-web-development-mardan-azat/
https://textbookfull.com/product/full-stack-javascript-learn-
backbone-js-node-js-and-mongodb-mardan-azat/
https://textbookfull.com/product/building-isomorphic-javascript-
apps-from-concept-to-implementation-to-real-world-solutions-1st-
edition-jason-strimpel/
React js Essentials A fast paced guide to designing and
building scalable and maintainable web apps with React
js 1st Edition Fedosejev
https://textbookfull.com/product/react-js-essentials-a-fast-
paced-guide-to-designing-and-building-scalable-and-maintainable-
web-apps-with-react-js-1st-edition-fedosejev/
https://textbookfull.com/product/client-server-web-apps-with-
javascript-and-java-rich-scalable-and-restful-1st-edition-
saternos-casimir/
https://textbookfull.com/product/react-16-essentials-a-fast-
paced-hands-on-guide-to-designing-and-building-scalable-and-
maintainable-web-apps-with-react-16-second-edition-edition-
boduch/
https://textbookfull.com/product/building-web-apps-with-
wordpress-wordpress-as-an-application-framework-brian-
messenlehner/
https://textbookfull.com/product/practical-bot-development-
designing-and-building-bots-with-node-js-and-microsoft-bot-
framework-szymon-rozga/
Practical
Node.js
Building Real-World Scalable Web Apps
—
Second Edition
—
Azat Mardan
Practical Node.js
Building Real-World Scalable
Web Apps
Second Edition
Azat Mardan
Practical Node.js
Azat Mardan
San Francisco, California, USA
Acknowledgments�������������������������������������������������������������������������������������������������xvii
Introduction������������������������������������������������������������������������������������������������������������xix
v
Table of Contents
vi
Table of Contents
vii
Table of Contents
viii
Table of Contents
ix
Table of Contents
Chapter 8: Building Node.js REST API Servers with Express.js and Hapi������������ 277
RESTful API Basics�������������������������������������������������������������������������������������������������������������������� 279
Project Dependencies��������������������������������������������������������������������������������������������������������������� 281
Test Coverage with Mocha and Superagent������������������������������������������������������������������������������ 283
REST API Server Implementation with Express and Mongoskin����������������������������������������������� 289
Refactoring: Hapi REST API Server�������������������������������������������������������������������������������������������� 298
Summary���������������������������������������������������������������������������������������������������������������������������������� 305
xi
Table of Contents
Chapter 12: Modularizing Your Code and Publishing Node.js Modules to npm���� 389
Recommended Folder Structure����������������������������������������������������������������������������������������������� 391
Modularizing Patterns��������������������������������������������������������������������������������������������������������������� 392
Composing package.json���������������������������������������������������������������������������������������������������������� 395
Publishing to npm��������������������������������������������������������������������������������������������������������������������� 397
Not-Locking Versions���������������������������������������������������������������������������������������������������������������� 398
Summary���������������������������������������������������������������������������������������������������������������������������������� 399
Chapter 15: Node Microservices with Docker and AWS ECS�������������������������������� 431
Installing Installations��������������������������������������������������������������������������������������������������������������� 432
Installing Docker Engine������������������������������������������������������������������������������������������������������ 432
Getting an AWS Account������������������������������������������������������������������������������������������������������ 434
Installing AWS CLI���������������������������������������������������������������������������������������������������������������� 436
Dockerizing Node Microservice������������������������������������������������������������������������������������������������ 437
Creating/Copying the Node Project������������������������������������������������������������������������������������� 437
Creating a Node.js Dockerfile���������������������������������������������������������������������������������������������� 439
Use Docker Networks for Multi-container Setup���������������������������������������������������������������������� 445
Creating a Docker Network������������������������������������������������������������������������������������������������� 445
Launch App into a Network������������������������������������������������������������������������������������������������� 446
xii
Table of Contents
Index��������������������������������������������������������������������������������������������������������������������� 497
xiii
About the Author
Azat Mardan works in technology leadership at Indeed.com,
the world leader in job search. Azat is a JavaScript/Node.
js expert with dozens of published online courses on Node
University, edX, and Udemy, and books including much
praised top-sellers React Quickly (Manning, 2017), Full Stack
JavaScript (Apress, 2015), Practical Node.js (Apress, 2014),
Pro Express.js (Apress, 2014) and many others.
Two of Azat’s self-published books, Rapid Prototyping
with JS and Express.js Guide, became bestsellers on Amazon in
their categories before being revised and published by Apress.
In 2016 alone, Azat spoke at over a dozen tech conferences, including JSConf, Node
Summit, NDC, Node Interactive, ConFoo, ForwardJS, All Things Open, GDG DevFest,
Great Wide Open, and others. Over the years, Azat has shared a speaking platform with
prominent software gurus such as Douglas Crockford, Christian Heilmann, Jeff Atwood,
Dan Shaw, Mikeal Rogers, John Papa, Axel Rauschmayer, Kyle Simpso, Samer Buna,
James Halliday, Maxwell Ogden, Rey Bango, and many others.
Azat is an ex-Technology Fellow at Capital One, a top U.S. bank. At various times,
Azat has worked as software engineer and technology leader in different organizations,
including U.S. federal government agencies, Fortune 200 companies, small startups,
and medium-sized corporations. During his career, Azat has worked on teams with
prominent tech people such as Raquel Vélez (first engineer at npm), Jim Jagielski
(founder of Apache Foundation), Bobby Calderwood (contributor to ClojureScript), and
Mitch Pirtle (co-founder of Joomla!).
Azat has taught in-person and face-to-face over a thousand software engineers at
prominent U.S. and global corporations including Cisco, Walmart, Starbucks, Michael
Kors, Salesforce, 20th Century Fox/Fox Studios, VMWare, CapitalOne, OnDeck,
Northwestern Mutual, HubSpot, UC Davis, The University of Arizona, Intuit, DocuSign,
Intuit, Macy’s, Twillio, The Orchard, and Apple.
In his spare time, Azat enjoys a cup of Americano with ghee while recording videos
for Node University (https://node.university), where thousands of developers
sharpen and master their Node skills.
xv
Acknowledgments
Thank you to the supporters of my Kickstarter campaign. Without you, I probably would
have not worked on this release so hard, and maybe wouldn’t have worked at all. You are
awesome because you made this new edition a reality. Not only that but you have made
this book available on GitHub for the entire world to read and learn Node, the greatest
technology for building web applications ever.
In particular, a great many thanks to individual Kickstarter supporters (who will be
getting the signed print edition books and other rewards): Matthew Amacker, Jordan
Horiuchi, Tim Chen, Alexey Bushnev, Aleksey Maksimov, Maurice van Cooten, Ryan, Ng
Yao Min, Kommana Karteek, Elias Yousef, Arhuman, Javier Armendariz, Dave Anderson,
and Edithson Abelard. You guys are brilliant!
I can’t not mention the biggest supporter, DevelopIntelligence, which is one of the
best training companies, if not the best (www.developintelligence.com). If you need
to train your software engineers in anything, e-mail them. Seriously, DevelopIntelligence
has been around for more than 20 years and has great teachers and great technical
classes. I was one of their instructors, so I know.
I convey my gratitude to all the wonderful people I’ve encountered in my software
engineering career. These people supported, mentored, and trusted me with new
challenges, helped me to find mistakes, and pushed my limits.
Of course, this book wouldn’t be possible without the assistance, research, and
championing done by my wonderful Apress editors. I especially thank Louise Corrigan,
James Markham, Cat Ohala, and Peter Elst.
Also, appreciation and many thanks go to the readers who kindly provided feedback
to the first edition of Practical Node.js, my Webapplog.com (http://webapplog.com)
blog posts, and my prior books.
xvii
Introduction
More and more books and online resources are being published that cover Node.js
basics (typically, how-to’s of Hello World and simple apps). For the most part, these
tutorials rely on core modules only or maybe one or two npm packages. This “sandbox”
approach of tutorials is easy and doesn’t require many dependencies, but it couldn’t be
further from the actual Node.js stack.
This is especially true with Node.js, the core of which—by design—is kept lean and
minimal. At the same time, the vast “userland” (that is, npm) provides an ecosystem
of packages/modules to serve specific granular purposes. Therefore, there is a need
to show how Node.js is used in the industry and to have it all in one place—the all-
encompassing practical resource that can be used as a learning tool, code cookbook, and
reference.
xix
Introduction
Practical Node.js aims to save you time and make you a more productive Node.js
programmer. Although the first chapter is dedicated to installations and a few important
differences between Node.js and browser JavaScript, I didn’t want to dilute the core
message of making production-ready apps, or make the book even larger and more
convoluted. Therefore, this book is not a beginner’s guide, and there is no extensive
immersion into the inner workings of the Node.js platform and its core modules.
I also can’t guarantee that I’ve explained each component and topic to the extent
you need, because the nature of your project might be very specific. Most chapters in the
book help you to get started with the stack. There is simply no realistic way to fit so many
topics in one book and cover them comprehensively.
Another caveat of this book (and virtually any programming book) is that the
versions of the packages we use will eventually become obsolete. Often, this isn’t an
issue because, in this book, versions are stated and locked explicitly. So, no matter what,
the examples will continue to work with book’s versions. Even if you decide to use the
latest versions, in many cases that might not be an issue because essentials remain the
same. However, if you go this off-path route, once in a while you might be faced with a
breaking change introduced by the latest versions.
• Build web apps with Express.js 4, MongoDB, and the Jade template
engine
xxi
Introduction
• Prepare code for production with Redis, Node.js domains, and the
cluster library using tips and best practices
You already know what Node.js is. It’s time to learn what you can do with it and see
how far you can take it.
N
otation
The book and all its source code follow StandardJS (https://standardjs.com) coding
style. When it comes to showing the code in the book, this book follows a few formatting
conventions. Code is in monospace font. This is inline code, var book = {name:
'Practical Node.js'};, and this is a code listing:
xxii
Introduction
Unfortunately, book pages are narrower than expandable code editor windows.
That’s why some code formatting in books may be slightly different than StandardJS,
because by necessity sometimes there are more line breaks.
For this reason, be especially careful in the code listings about maintaining proper
syntax, avoiding typos, and not having extra line breaks. If in doubt, always refer to the
GitHub source code instead of relying on the book because the GitHub source code will
always have more proper formatting (StandardJS) and may even contain a bug fix that
somehow sneaked into a code listing in the book.
If the code begins with $, that means it’s meant to be executed in the terminal/
command line. However, if the code line starts with >, the code is meant for the virtual
environment (the console—either Node.js or MongoDB). If the Node.js module name
is in code font, that means it’s the npm name and you can use it with npm and the
require() method, such as superagent .
S
ource Code
Learning is more effective when we apply our knowledge right away. For this reason,
virtually every chapter in Practical Node.js ends with a hands-on exercise. For your
convenience, and because the publisher and I believe in open source and transparency,
all the book’s examples are available publicly (free of charge) for exploration and
execution on GitHub at https://github.com/azat-co/practicalnode.
xxiii
Introduction
xxiv
CHAPTER 1
Setting up Node.js
and Other Essentials
In many technologies, it’s vital to have the proper foundation set up first, before moving
on to solving more complex problems. With Node.js, proper foundation is even more
important because of all the bad syntax and quirks that JavaScript brings to Node. In this
chapter, we cover the following:
1
© Azat Mardan 2018
A. Mardan, Practical Node.js, https://doi.org/10.1007/978-1-4842-3039-8_1
Chapter 1 Setting up Node.js and Other Essentials
smooth execution and lack of conflicts. In the following subsection, we examine a few
different approaches to installing Node.js:
• One-click installers: Probably the easiest and fastest way to get started
with the platform
A note about Long-Term Support (LTS) and non-LTS versions: LTS versions have
longer maintenance window. This means that LTS versions will have patches and
updates longer than non-LTS versions. Thus LTS versions are recommended for most
users and production deployment (not because non- LTS is not proven but simply
because LTS has a longer support time).
LTS versions are even numbers, such as 4, 6, 8, 10, and so on. And non-LTS versions
are odd numbers. Non-LTS versions have the latest features before they are rolled out
to the next LTS version. We will be using LTS version 8.x. For more information and the
current release schedule, please see https://github.com/nodejs/LTS.
O
ne-Click Installers
First, let’s go to http://nodejs.org and download a one-click installer for your OS
(Figure 1-1) by clicking on the Install button. Don’t choose binaries or source code
unless you know what to do with them or your OS is not present there (i.e., not Windows
or Mac).
2
Chapter 1 Setting up Node.js and Other Essentials
The installers come with npm, Node package manager, which is an important tool
for managing dependencies.
If there’s no installer for your OS on the download page (page https://nodejs.
org/en/download), you can get the source code and compile it yourself (Figure 1-2).
3
Chapter 1 Setting up Node.js and Other Essentials
Note For older macOS machines, you can pick 32-bit versions.
$ brew update
$ brew install node
4
Chapter 1 Setting up Node.js and Other Essentials
If your macOS does not have HomeBrew, go to http://brew.sh or install it with the
following command:
Note Advanced users who choose to make their own Node.js builds need to have
certain compilers installed first. For more information about building Node from
source, refer to the official documentation (https://github.com/nodejs/
node/blob/master/BUILDING.md).
$ make install
$ curl https://npmjs.org/install.sh | sh
5
Chapter 1 Setting up Node.js and Other Essentials
Tip If you find yourself getting errors when trying to install the module globally
via npm ($ npm install -g <packagename>), reinstall Node.js and npm
with the “Installing Without sudo” solution —discussed in the next section—to
eliminate the need to use sudo with the installation command.
Note Please be sure you are comfortable with the functionality of the chown
command before you run it.
$ mkdir node-install
$ curl http://nodejs.org/dist/node-v0.4.3.tar.gz | tar -xzf - -C
node-install
$ cd node-install/*
$ ./configure
$ make install
$ curl https://npmjs.org/install.sh | sh
6
Chapter 1 Setting up Node.js and Other Essentials
This step requires Git. To install it, go to http://git-scm.com and click Download.
For basic Git commands, refer to Chapter 11, which explores deployment.
For full, detailed instructions, go to https://github.com/nodejs/node/blob/
master/BUILDING.md. Here is the short version of the instructions:
$ mkdir ~/local
$ echo 'export PATH=$HOME/local/bin:$PATH' >> ~/.bashrc
$ . ~/.bashrc
$ make install
$ curl https://raw.github.com/creationix/nvm/master/install.sh | sh
7
Chapter 1 Setting up Node.js and Other Essentials
or
Then you should be ready to start using NVM and its install. For example, to
install Node v0.10, use this magic formula:
After installing Node v0.10, to switch to the 0.10 version, apply the use command.
For example:
NVM won’t move global npm modules from one version to another. If you are
switching from y to x, then use nvm install x --reinstall-packages-from=y to
reinstall all the global packages from “y” in the new “x”. For example, to move packages
to Node v8 from Node v6, use nvm install 8.4.0 --reinstall-packages-
from=6.11.2.
Language: English
Por el tenor de las presentes y por lo que á nos toca, damos licencia para
que pueda imprimirse y publicarse la Gramática Anglo-Visaya escrita por el
R.P.Fr. Pedro Gimenez, Recoleto, atento á que según lo manifestado por el
M.R. Vicario Provincial de la órden, ha sido censurada por dos Religiosos
de la misma, que la han juzgado digna de que se dé á la estampa, no
conteniendo cosa alguna contraria á la fé y buenas costumbres, y mandamos
que se inserte este nuestro permiso al principio de cada ejemplar.
SEVERINO PICZON.
JUAN P. GORORDO
(Hay una rúbrica.)
Preface
The letters made use of in the Bisaya alphabet, are twenty in number as
follows:
A. Ah. N. Ai-nay.
B. Bay. Ng. Ai-ngay.
C. Thay. Ñ Ai-nyay.
D. Day. O. Oh.
E. A or ay. P. Pay.
G. Hay. Q. Coo.
H. Atchay. S. Es say.
I. EE. T. Tay.
L. Ai-lay. U. OO.
M. Ai-may. Y. EE (griega).
The vowels are A, E, I, O, U, and Y at the end of a word. The vowels are
never silent, except U in the syllables que, qui, the sound of which
corresponds to that heard in the English words Kedge, Keep, Key.
2.a The determinate article is ang for singular, and ang mga or sa mga
according to the cases for plural.
3.a The indeterminate article is usa, one for the singular; and uban, pila or
mapila, some for the plural.
4.a The article of the proper names is si for both masculine and feminine.
DEFINITE ARTICLE.
SINGULAR.
INDEFINITE ARTICLE.
SINGULAR
PLURAL.
Some wish, while others do not—ang uban bu-ut, ang uban dili—Some of
the trees, which are there—Pipila sa mga cahuy dihá.
N. Peter. Si Pedro.
G. Of Peter. Ni Pedro.
D. To Peter. Can Pedro.
Ac. Peter. Can Pedro.
Vc. Peter. Oy Pedro.
Abl. With Peter. Can Pedro.
Remark l.a The article of the proper names is used also to point out a person
and his companions, as:
2.a This article serves also to express kindness or love: as.—My Mother, Si
nanay.—My father, Si tatay.—The female child, Si inday—The parish
Priest, Si amoy—My eldest sister, Si manang.
3.a The English compounded words, wooden, golden etc. change the affix
en into nga, as:—The wooden cross, Ang cruz nga cahoy—The golden
ring, Ang singsing nga bulauan.
4.a When we point out the destination of a thing, it is employed the article
sa—Thus: The water vat, Ang tadyao sa tubig.—The bottle of wine, Ang
botella sa vino.
6.a The article sa is employed, when the thing it refers to is determinate, but
when it is indeterminate, the article ug must be used, as: Bring the money,
Magdala ca sa sapi. Give me money, Taga-an mo acó ug salapi.
PLURAL.
1.a The plural is formed in Bisaya by placing mga after the article ang or
sa.
Declension.
N. The cats Ang mga iring
G. Of the cats Sa mga iring
D. To the cats Sa mga iring
Ac. The cats Sa mga iring
Vc. Oh cats Mga iring
Abl. With the cats Sa mga iring
2.a When the possessive case is placed before the name, it must be placed
between ang and mga, thus—My friends, ang acong mga higala—Your
shoes, ang imong mga sapin.
3.a Rem. The Bisaya article like the English, does not distinguish the
gender, but there are two ways of distinguishing the masculine and feminine
in this dialect: 1. By using different words: Ex, ang bana, the husband; ang
asaua, the wife; ang amahan, the father: ang inahan, the mother. 2. By the
suffixes lalaqui and babaye; Ex. ang iro nga lalaqui, the dog, ang iro nga
babaye, she dog; ang bata nga lalaqui, the boy; ang bata nga babaye, the
girl.
Joseph's soul, ang calag ni José—John's ground. ang yuta ni Juan, or ang
can Juan nga yuta—Who is at Peter's house, ang sa can Pedro nga balay, or
ang sa balay ni Pedro—Bring the rice: Magdala ca ug bugas—My mother
and sister are at John's cottage, Si nanay ug si inday tua sa camalig ni Juan
—My brothers are rich, Ang acong mga igso-on salapia-non man—Are you
Peter's father?, Icao ba ang amahan ni Pedro?—I am, Acó man—Who is the
owner? ¿Quinsa ba ang tagia?—Where is your son?, Hain ba ang imong
anac?—He is at the cockfight, Tua sia sa bulangan—Has he much money?,
Daghan ba ang iang salapi?—He has but a few coins, Pipila lamang ca
dacó—Let us go. Tala na quitá—Good by. Ari na came—That man is a
drunkard. Palahubóg man canang tao—He is a drinker, but not a drunkard.
Palainom man sia, apan dili palahubóg—Where is my father?, ¿Hain ba ang
acong amahan?—Here he is; Ania dinhi—Who are those men?, ¿Quinsa ba
canang mga tao?—They are my friends. Mao ang acong mga higala.
Exercise I.
Have you the bread?—Yes, sir, I have the bread: Have you your bread?—I
have my bread.—Have you the salt?—I have the salt—Have you my salt?
—I have your salt.—Have you the soap?—I have the soap—Which (onsa
nga) soap have you?—I have your soap—Which shirt have you?—I have
my shirt, (ang acong sinina)?—Have you much money?—I have much
money—Where is your sister?—She is at the garden (tanaman sa mga
bulac)—Where is your father?—He is here.
Second Lesson.
Of the nouns.
Supposing the pupil knows the classification of the nouns into proper,
common or appellative &., we shall occupy ourselves with their formation,
being as it is, so much diverse and usual.
The root is the word which contains in itself the signification of the thing,
but can not express it without any other word, which we call a particle, to
which the root must be united.
1.a With the particle ca at the beginning of the root, and an after, are formed
collective nouns, and nouns of place, as:—Grove, cacahoyan—Banana
plantation, casagingan.
2.a With the particle ca before, are formed the nouns of quality, as:—
Whiteness,—Ang caputi.
3.a By placing the particle pagca before the roots, are formed the abstract
nouns, and those pointing out the essence of the things, as:
4.a With the particle isigca before the root, are formed correlative nouns,
placing the possessive pronoun in genitive case, as:
My like. Ang isigcataoo co.
5.a With the particles mag and man are formed substantive and adjective
nouns, duplicating the first syllable of the roots, thus:
6. With the particle pala before, are formed several substantives, as:
7.a With tag before the root, are formed nouns expressing the owner of a
thing, as:
8.a Putting this same particle before the words signifying the seasons of the
year or the atmospherical changes, points out the time of these changes: and
placing it before words signifying the farming-works, it shows the time of
those operations. In some provinces are used also in this same sense, the
particles tig and tin, thus:
10.a Taga signifies also until, and points out the end of the action, as:
11.a By means of the articles pag and pagca are formed the verbal
substantives. Ex:
12.a Placing the particle tagi before the root it points out permanency on a
place, as:
Practical examples
Exercise II.
Good morning, how are you?—Very well, I thank you—Where are you
from?—I am from Spain—Of which town?—From Conago—Who (quinsa)
has my book?—I have it—Who is that young Lady?—She is Miss Kate—
Where is my trunk (caban)?—The servant has it—Have you my fine
glasses?—I have them—Have you the fine horses of my neighbours?—I
have not them—Who are you?—I am John—Are you Peter's father?—I am.
Third Lesson.
Of the cardinal numbers.
The father Encina divides the numbers into primitives, ordinals,
distributives and vicenales.
The primitive numerals are those which serve to count, and are the
followings:
1 One. Usá.
2 Two. Duha.
3 Three. Tolo.
4 Four. Upat.
5 Five. Lima.
6 Six. Unum.
7 Seven. Pito.
8 Eight. Ualo.
9 Nine. Siam.
10 Ten. Napolo.
11 Eleven. Napolo ug usá.
12 Twelve. Napolo ug duha.
13 Thirteen. Napolo ug tolo.
14 Fourteen. Napolo ug upat.
15 Fifteen. Napolo ug lima.
16 Sixteen. Napolo ug unum.
17 Seventeen. Napolo ug pito.
18 Eighteen. Napolo ug ualo.
19 Nineteen. Napolo ug siam.
20 Twenty. Caluha-an.
30 Thirty. Catlo-an.
40 Forty. Capat-an.
50 Fifty. Calim-an.
60 Sixty. Canum-an.
70 Seventy. Capito-an.
80 Eighty. Caualo-an.
90 Ninety. Casiam-an.
100 One hundred. Usa ca gatus.
101 One hundred and one Usa ca gatus ug usá.
200 Two hundred. Duha ca gatus.
300 Three hundred. Tolo ca gatus.
1000 One thousand. Usa ca libo.
1001 One thousand and one. Usa ca libo ug usá.
2000 Two thousand. Duha ca libo.
Remarks:
1.a The English forms “a hundred, a thousand”, are rendered into Bisaya by
usa ca gatus, usa ca libo. Expressions like “eighteen hundred” must be
translated as:—one thousand eight hundred, ex: The year 1898.—Usa ca
libo ualo ca gatus casiaman ug usa.
2.a The unity begins by a consonant duplicates, the first syllable, when
points out any quantity. The denaries are formed by putting before unity the
particle ca and an after, as we have seen. Ca serves also to join the numbers
to the nouns, thus: Usa cataoo.—Napolo ca pisos, upat ca adlao.
Ordinal Numbers.
Monday. Lunes.
Tuesday. Martes.
Wednesday. Miercoles.
Thursday. Jueves.
Friday. Viernes.
Saturday. Sabado.
Sunday. Domingo.
(The months and the days of the week are taken from the Spanish
language).
January. Enero.
February. Febrero.
March. Marzo.
April. Abril.
May. Mayo.
June. Junio.
July. Julio.
August. Agosto.
September. Setiembre.
October. Octubre.
November. Noviembre.
December. Diciembre.
Partitive Numbers
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade
Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.
textbookfull.com