Are you all excited, as we are, to get started? Well, before we start writing some code, we have a few things we need to do first. These first couple of chapters may be light on code, but are rich in concepts and ideas that you will need on your journey to master jQuery Mobile.
Before we begin, let's talk briefly about what jQuery Mobile is and, more importantly, what it isn't. It is an extension of jQuery that will allow you to create cross-browser web applications and websites that will look the same, regardless of the mobile browser used to view them and the underlying mobile OS. jQuery Mobile provides wide browser and device coverage using progressive enhancement, making your website accessible on the widest range of devices and browsers. It also enhances the form inputs and UI widgets to be touch-friendly. It is not a framework that will allow you to build native applications, but you can use this framework to build hybrid mobile applications. In one of the last chapters of this book, we will look at using one such framework—Apache's Cordova.
Now that we have got that out of the way, grab your drink of choice, fire up your computer, and let's rock 'n' roll.
In this chapter, we will look at installing the XAMPP server stack for both Windows and Mac OS X, installing the Aptana Studio integrated development environment (IDE), and then start looking at using jQuery Mobile and the various methods you can use in your project to include the framework. We will then create a small application to get our feet wet with jQuery Mobile. For some of you this could be a simple refresher, but for others this could be a crash course introduction.
You may be asking yourself, "Why am I installing a full server stack, and is jQuery Mobile usage tied to PHP or any of the technology in the XAMPP stack?" While this book is focused on development with jQuery Mobile, we will be doing a very small bit of PHP with MySQL, just to show the interaction between the two, and so we will be setting up our XAMPP stack. However, the usage of jQuery Mobile is completely independent of PHP and any other technology in the XAMPP stack, so developers should feel free to use any other server stack that they prefer for development. If you are not a PHP pro, don't worry; the code will be basic and we will explain it all. If you wish to enhance your PHP skills, check out any of the number of PHP titles Packt has published.
Also by no means are you bound to using your local machine. If you have a web server, feel free to use it; we just find it easier to develop on a local machine so we don't have to worry about making a change, uploading, testing, and repeating.
XAMPP is a fully functional server stack by the folks at Apache Friends, which includes Apache, PHP, MySQL, Perl, Tomcat, phpMyAdmin, and much more in one installation package. By installing it, you don't have to worry about manually setting up each component of a WAMP stack, you simply execute the installer and choose the components you wish to install.
To get started, we will need to download the latest stable XAMPP installer from https://www.apachefriends.org/index.html. We recommend using the installer rather than the ZIP file method for this book.
After we have it downloaded, the installation is pretty straightforward:
If you are using Windows Vista or higher, and User Account Control (UAC) is enabled, you will see a warning that some functionality may be limited if installed to the
Program Filesdirectory. Click OK.
Another warning may pop up prompting you to install the Microsoft Visual Studio 2008 redistributable package. Click Yes and you will be taken to a Microsoft downloads page where you can download this redistributable from. Download it and install it before continuing with the XAMPP installation.
Click on Next and you will be shown all the components that make up the XAMPP package. Select the features you want but for this book, be sure to pick at least Apache, PHP, MySQL, and phpMyAdmin, as they will be utilized at some point in this book.
The default directory should be fine, so leave it as is and click Next.
This screen will ask you if you wish to learn more about Bitnami; this is your choice, so if you do not want to see more information, simply uncheck the checkbox and click Next.
The installation itself will take several minutes to complete. Once it is finished, click on Finish from the screen that pops up.
In the control panel, you will be able to start, stop, and restart all the services that were installed with XAMPP. By default, some of these services may be turned off. For now, let's make sure that Apache and MySQL are both running by clicking on Start next to the service name.
Download XAMPP from the same page as the Windows binaries: https://www.apachefriends.org/index.html. Double-click on the
.DMG file that you just downloaded, and drag the XAMPP folder into the
Applications directory. After this is completed, open the XAMPP control panel found in
Applications and start the Apache and MySQL services.
Regardless of what OS you installed XAMPP, we can verify the installation on both in the same way. Open up your browser and go to the address
http://localhost/xampp. If all went well, you will see a screen similar to the following:
Congratulations! You now have a full-blown testing/development server ready for use to go with this book. If you don't see a screenshot like the preceding one, double check to make sure you did not miss a step.
Important XAMPP Notes
There are a couple things you need to be aware of with regards to XAMPP. First off, it is a great product for situations like this when you need to set up a quick development environment, but it should be used for just that: a development environment. You should not use XAMPP as a production server. Instead, you should install and configure each component individually for various security reasons.
XAMPP for Mac is still listed as being in beta, therefore you could come across some bugs. If running beta software on your Mac scares you a bit, there are other alternatives such as MAMP, which is a very popular Mac stack available at http://www.mamp.info/en/index.html.
There is also a version of XAMPP for Linux, so if that is your OS of choice, feel free to download and install it for the purposes of this book.
Aptana Studio is a free, open source IDE built off of Eclipse. We will be using Aptana Studio 3 for this book and you can download it from http://www.aptana.com/products/studio3/download.html.
Choose I Agree to accept the license agreement.
The default directory should be fine, as should the default programs group, so hit Next on these two steps.
The installer will now prompt you to choose which file extensions Aptana should be the default editor for. Leave the default settings on this screen. You can change them later in the IDE settings if you need to. Click on Next.
Click on Install to start the installation. Once the installation is finished, click on Next and then on Close.
Installing Aptana Studio on Mac is just as easy as it was for installing XAMPP. After you download the
.DMG file, open it up and drag the indicated folder into your
Now that Aptana Studio is installed, open it up and you will be presented with a dialog box asking you to set up your default workspace directory. Go ahead and set this to be your
htdocs folder of your XAMPP installation. For you folks on Windows, that directory will be
c:\xampp\htdocs (provided you used the default directory). For the Mac users, this will be
/Applications/XAMPP/htdocs. By setting this default workspace, any new projects we create will automatically be created and saved here, making it easier for us to test.
Also for you Mac users, there are some further steps that you may need to do for Apatana Studio to work correctly. By default, the XAMPP
htdocs folder is owned by root, and because of this, it is set to read-only. In order for you to create and save to this directory, we will need to change those permissions.
Click on the folder in Finder and then choose Get Info from the File menu.
Click on the triangle next to Sharing and Permissions to display the permissions for the selected file or folder.
Click on the lock and authenticate with an administrator account.
Use the menus next to users and groups to change the permissions.
Once you are finished, close the Info window.
Of course, if you need further assistance with Aptana Studio or even XAMPP, refer to their respective websites for support. If you happen to fall in love with Aptana Studio and wish to learn more about it, check out Aptana Studio Beginner's Guide, Thomas Deuling, Packt Publishing.
We chose to use Aptana Studio 3 as an IDE for this book, so that you can follow along without having to purchase the same IDE we use (we use Zend Studio). Aptana Studio is free so if you have never used an IDE before, you now have an option. If you have an IDE already that you use on a daily basis, use it for the book. Just adjust any steps listed for Aptana to fit your own IDE.
Now we finally get to the meat and potatoes of what this book is about: jQuery Mobile. First thing we need to do is download the framework to use it in our projects. You have two ways of doing this. You can download a prebuilt ZIP file containing the latest stable release and everything you will need to use jQuery Mobile. The second option is that you can build a package that contains only the pieces you need, including earlier versions or unstable branches.
In this book, we will be using the complete package. There are couple reasons for this. First of all, we will be using and looking at so many different aspects of the framework that it would take a lot of space here for us to tell you which pieces to select in the builder. More importantly, as noted on the jQuery Mobile website, the builder is currently in alpha and is not recommended for production environments. Yes, we realize that we are not in a production environment here, but we don't want to try to master a framework by using code that could be unstable. We believe that's enough babbling, let's start downloading!
Go to http://jquerymobile.com. On the top right- hand side of the page, you will see the links to download the latest stable version (which at the time of writing this book is 1.4.5) and a link to the download builder. Click on the link for the latest stable. After the ZIP file is downloaded, go ahead and open it up and you should see the following:
That's quite daunting, isn't it! No worries at all though; we will only be referencing a few of the files here, but let's talk about the overall contents of the ZIP file so that you will have a better understanding of what you just downloaded:
demos: We highly recommend that you look at and play around with the contents of this folder. You will find numerous examples here of the different elements of jQuery Mobile. Go now, spend some time with it and then come back—we'll wait.
*.css files: These are several style sheets that make up the overall jQuery Mobile framework. They control the preceding icons, the theme (more on that later), structure, and more.
jquery.mobile-1.4.5.css: This is the main and most important CSS file of the download and the one that you will reference and use in your applications.
You may have noticed that there are two versions of each file. One that has
.minappended to the filename and one that does not. Those with
.minare compressed minified files. This means they do not have any white spaces, new line characters, and comments in them. They are the absolute smallest in size that they can be and are hard to read as they do not have any formatting. Uncompressed files, or those without
.min, contain comments, spacing, and more things that make them easier to read.
As a rule of thumb, you should develop with the uncompressed files; that way, if you have any questions or need to see how something works, you can easily read the file. When you deploy the application, use the
.minfiles so that the application size is smaller.
.min) files should be preferred in the production environment.
There is a third way to acquire and use the framework. In the previous section, we looked at two different ways in which we can download and include the framework locally in our project. In addition to downloading jQuery Mobile, you can also use it via a content delivery network (CDN).
If the user visits other sites that use the same CDN, the framework files could already be cached, thereby decreasing your load time even more.
It reduces the load on your web server. If you have a heavily used site or application, this could decrease the use of your own server resources.
Using a CDN can also allow the user to download the framework files even faster since there may be a CDN mirror closer to the user location than your web server.
So with all these cool advantages, why in the world would we ever want to use it locally? I mean, it sounds like we'd be stupid to ever download it again. Well, my friends, as with many things in life, there is always a downside.
Obviously, the biggest downfall is offline applications. If you are expecting or even adding the slightest bit of offline functionality to your project, then you cannot have the project going off server to use the framework from a CDN. It would have to be stored locally. If the user is offline, they won't be able to download it from the CDN and therefore would not be able to use the project that you worked so hard on.
Okay, so you're not planning on any offline functionality of your project. What else could stop you from using it via a CDN? Well, my friends we have a few more downfalls:
If your project is on a company intranet, there may be ACLs or firewalls in place that could prevent your internal webserver from accessing the outside world.
If your website is using an SSL certificate, the user will get a warning that they are accessing information from an unsecure site. This could spook many users and they may not trust your website.
If you make custom changes or add new functionality to the framework, you will obviously need to store it locally unless you're an absolute rock star and get your changes rolled into the main builds.
Well, we assume that we have covered the advantages and disadvantages of the usage of CDN well enough, so let's look at how and from where we can load jQuery Mobile.
There are three main CDNs we can use in our projects. They are Google, Microsoft, and of course, jQuery itself. Are there advantages to using one over the other? Possibly, but I think the differences would be small. Google may offer more mirrors but more people may use jQuery's own CDN meaning more people would have it cached, so in the end there may be no difference in efficiency.
We will look at the code for each of the CDNs and you can pull it from whichever one you wish to use.
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jquerymobile/1.4.5/jquery.mobile.min.css" /> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js "></script> <script src="http://ajax.googleapis.com/ajax/libs/jquerymobile/1.4.5/jquery.mobile.min.js"></script>
<link rel="stylesheet" href="http://ajax.aspnetcdn.com/ajax/jquery.mobile/1.4.5/jquery.mobile-1.4.5.min.css" /> <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.11.0.min.js"></script> <script src="http://ajax.aspnetcdn.com/ajax/jquery.mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css" /> <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script> <script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
So what are we doing in each of these blocks? Well, the first line of each block
<link rel...> is loading in the CSS file we need for the project. The first
This brings up a good point: even though we are using jQuery Mobile, we still need to load jQuery core. jQuery Mobile is not a replacement for jQuery proper but more of an extension, much like jQuery UI is.
<script src…> file loads jQuery Mobile itself. So let's get our feet wet in code now.
So far in this chapter we have done nothing but talk about jQuery Mobile, how we get it, why we should do things a certain way, blah blah. You're a developer; you want to see this in action and now you will. We are going to make a simple jQuery Mobile application. We'll see the code and then we'll explain what is going on within each piece of code:
Go ahead and fire up Aptana Studio 3.
Navigate to File | New | Web Project.
Pick the default template
Name the project whatever you like.
Don't worry too much about everything in Aptana Studio right now, as we'll look at it in more detail in the next chapter.
Right-click on your project and navigate to New | File from the pop-up menu. Name the file
index.html. Add the following code to the file:
<html> <head> <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scrolable=no"> <title>jQuery Mobile: Getting Started</title> <link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css" /> <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script> <script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script> </head>
This is your standard HTML5 header with us loading the jQuery Framework from the jQuery CDN. Also notice in-keeping with tradition, we are loading the compressed jQuery and jQuery Mobile files so that we have the smallest possible footprint we can have:
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scrolable=no">
Now, you may or may not know this line, depending on how much mobile development experience you have. This line is important as it really makes a difference to how your website or application looks on a mobile browser. Apple started it for use on iOS Safari but has since been adopted by others. If you did not have this line in your project, the page we have would be rendered "zoomed out" basically. The user would have to double-click or zoom in via other means to see the page. By having this, we make sure mobile browsers are on their best behavior in helping your project look fabulous when the user visits:
div lines sprinkled throughout. These are jQuery Mobile tags. It uses the standard
div tag but adds on these things called data roles. In this instance, we are giving
div the role of a page. The page role is the main role in jQuery Mobile. We'll discuss this in more detail in another chapter. For now, let's keep moving.
<div data-role="header"> <h3>Web Development Books</h3> </div>
Here we are using another role, the header role. This allows us to display "Web Development Books" in a different manner than the rest of the page. As you might have noticed in the preceding screenshots, the entire text in the header is not visible. Whenever the text in the header is long, it will be truncated and appended by the ellipses (...). So make sure that you do not have really long names in the header. However, if long names cannot be averted, you can override the jQuery Mobile CSS to make sure that the text in the header is not truncated.
This is the heart of our page, the content. Within the
div tags, we are creating an unordered list, which jQuery Mobile then renders for us as buttons almost. If we had the links going to existing pages rather than the dummy link, the user could click the list items and navigate through the project. Again, we will be discussing these in much greater detail in another chapter.
Are you still with us? Everything might seem a bit overwhelming right now, even though we hope it doesn't, but as we go and you write more code, things will get easier and you'll see how powerful jQuery Mobile is without having to write a lot of complicated code.
In this chapter, we set up a local development server using XAMPP, and we installed an IDE to use for the book with Aptana Studio 3. We looked at the different ways you can download jQuery Mobile for local use in your project and then you saw how we can use it from the different CDNs, along with the advantages and disadvantages of using a CDN. Once all the basic setup was completed, we created our first jQuery Mobile project.
In the chapter that follows, we will take a look at the different tools and techniques that will help us not just in the development process, but also help us test our application as we develop it.