SlideShare a Scribd company logo
Aurelia In Action 1 Converted Sean Hunter
download
https://ebookbell.com/product/aurelia-in-action-1-converted-sean-
hunter-46158502
Explore and download more ebooks at ebookbell.com
Here are some recommended products that we believe you will be
interested in. You can click the link to download.
Jquery In Action Third Edition 3rd Edition Bear Bibeault Yehuda Katz
https://ebookbell.com/product/jquery-in-action-third-edition-3rd-
edition-bear-bibeault-yehuda-katz-5217606
Jquery In Action 3rd Edition 3rd Edition Bear Bibeault Yehuda Katz
https://ebookbell.com/product/jquery-in-action-3rd-edition-3rd-
edition-bear-bibeault-yehuda-katz-55870124
Statues In Context Aurlia Massonberghoff
https://ebookbell.com/product/statues-in-context-aurlia-
massonberghoff-50729660
Moon Living Abroad In France Aurelia Dandrea
https://ebookbell.com/product/moon-living-abroad-in-france-aurelia-
dandrea-49002930
Messages For The Enlightenment Of A Humanity In Transformation Aurelia
Louise Jones
https://ebookbell.com/product/messages-for-the-enlightenment-of-a-
humanity-in-transformation-aurelia-louise-jones-5063492
Vegetarian Paris The Complete Insiders Guide To Th Best Veggie Food In
Paris Aurelia Dandrea
https://ebookbell.com/product/vegetarian-paris-the-complete-insiders-
guide-to-th-best-veggie-food-in-paris-aurelia-dandrea-48902282
Immersive Technology In Smart Cities Augmented And Virtual Reality In
Iot 1st Ed 2022 Sagaya Aurelia Editor
https://ebookbell.com/product/immersive-technology-in-smart-cities-
augmented-and-virtual-reality-in-iot-1st-ed-2022-sagaya-aurelia-
editor-33362774
What The Emperor Built Architecture And Empire In The Early Ming
Aurelia Campbell
https://ebookbell.com/product/what-the-emperor-built-architecture-and-
empire-in-the-early-ming-aurelia-campbell-23849686
Security Agents Alien Bartender Olympus Station 3 In The Stars Romance
Aurelia Skye Kit Tunstall
https://ebookbell.com/product/security-agents-alien-bartender-olympus-
station-3-in-the-stars-romance-aurelia-skye-kit-tunstall-51165272
Aurelia In Action 1 Converted Sean Hunter
Aurelia In Action 1 Converted Sean Hunter
Aurelia In Action 1 Converted Sean Hunter
Aurelia in Action
Sean Hunter
Aurelia In Action 1 Converted Sean Hunter
Copyright
For online information and ordering of this and other Manning books, please
visit www.manning.com. The publisher offers discounts on this book when
ordered in quantity. For more information, please contact
Special Sales Department
Manning Publications Co.
20 Baldwin Road
PO Box 761
Shelter Island, NY 11964
Email:
orders@manning.com
©2018 by Manning Publications Co. All rights reserved.
No part of this publication may be reproduced, stored in a retrieval system, or
transmitted, in any form or by means electronic, mechanical, photocopying, or
otherwise, without prior written permission of the publisher.
Many of the designations used by manufacturers and sellers to distinguish their
products are claimed as trademarks. Where those designations appear in the
book, and Manning Publications was aware of a trademark claim, the
designations have been printed in initial caps or all caps.
Recognizing the importance of preserving what has been written, it is Manning’s
policy to have the books we publish printed on acid-free paper, and we exert our
best efforts to that end. Recognizing also our responsibility to conserve the
resources of our planet, Manning books are printed on paper that is at least 15
percent recycled and processed without the use of elemental chlorine.
Manning Publications Co. 20 Baldwin Road PO Box 761 Shelter Island, NY 11964
Development editor: Toni Arritola
Technical development editor: Andrew Siemer
Review editor: Ivan Martinović
Project manager: Tiffany Taylor
Copy editor: Safis Editing
Proofreader: Katie Tennant
Technical proofreader: Troi Eisler
Typesetter: Dennis Dalinnik
Cover designer: Marija Tudor
ISBN: 9781617294785
Printed in the United States of America
1 2 3 4 5 6 7 8 9 10 – DP – 23 22 21 20 19 18
Dedication
To the welcoming and always enthusiastic Aurelia community
Brief Table of Contents
Copyright
Brief Table of Contents
Table of Contents
Preface
Acknowledgments
About this book
About the author
About the cover illustration
1. Introduction to Aurelia
Chapter 1. Introducing Aurelia
Chapter 2. Building your first Aurelia application
2. Exploring Aurelia
Chapter 3. View resources, custom elements, and custom attributes
Chapter 4. Aurelia templating and data binding
Chapter 5. Value converters and binding behaviors
Chapter 6. Intercomponent communication
Chapter 7. Working with forms
Chapter 8. Working with HTTP
Chapter 9. Routing
Chapter 10. Authentication
Chapter 11. Dynamic composition
Chapter 12. Web Components and Aurelia
Chapter 13. Extending Aurelia
Chapter 14. Animation
3. Aurelia in the real world
Chapter 15. Testing
Chapter 16. Deploying Aurelia applications
Appendix. Installation and setup
Aurelia glossary
Aurelia CLI cheat sheet
Index
List of Figures
List of Tables
List of Listings
Table of Contents
Copyright
Brief Table of Contents
Table of Contents
Preface
Acknowledgments
About this book
About the author
About the cover illustration
1. Introduction to Aurelia
Chapter 1. Introducing Aurelia
1.1. Why should you care?
1.1.1. How complicated are the applications you’re building?
1.1.2. How important is web-standards compliance to the team?
1.1.3. What past development experience does the team have?
1.1.4. How is the team organized?
1.1.5. What kind of commercial and community support do you need?
1.2. What kind of projects make Aurelia shine?
1.2.1. Server-side application with a sprinkling of JavaScript
1.2.2. SPA rendered on the client side
1.2.3. The hybrid approach: server side with SPA islands
1.2.4. Server-side-rendered SPA
1.2.5. Where does Aurelia sit?
1.2.6. What makes Aurelia different?
1.3. A tour of Aurelia
1.3.1. Binding
1.3.2. Handling DOM events
1.3.3. Routing
1.3.4. Inside the view-model, and what’s this about components?
1.3.5. The Aurelia component lifecycle
1.3.6. Loading data from an API
1.3.7. Dependency injection with Aurelia
1.3.8. Rendering the view
Summary
Chapter 2. Building your first Aurelia application
2.1. Introducing my-books
2.2. Building with Aurelia
2.2.1. Option 1: Download the quick start
2.2.2. Option 2: Skeleton application
2.2.3. Option 3: Aurelia CLI
2.2.4. Creating the my-books project
2.3. One-way and two-way data binding and event delegation
2.3.1. Adding the functionality inline
2.4. Creating components using Aurelia custom elements
2.5. Building services and retrieving data from a REST API
Troubleshooting steps
2.6. Maintaining page state with the Aurelia router
2.6.1. Configuring the router
2.7. Moving forward
2.8. my-books project status
Summary
2. Exploring Aurelia
Chapter 3. View resources, custom elements, and custom attributes
3.1. Understanding Aurelia’s templating primitives
3.1.1. Aurelia’s templating primitives
3.2. CSS resources
3.2.1. Setting up the project dependencies
3.2.2. Adding the CSS resources
3.2.3. Styling the my-books views
3.3. Custom elements
3.3.1. Custom elements
3.3.2. my-books custom elements
3.3.3. HTML-only custom elements
3.4. Custom attributes
3.4.1. Creating a tooltip custom attribute
3.4.2. Single-value binding
3.4.3. Options binding
3.5. my-books project status
Summary
Chapter 4. Aurelia templating and data binding
4.1. Template conditionals
4.2. Repeaters
4.2.1. Aurelia repeater contextual properties
4.3. Data binding with Aurelia
4.3.1. The three key ingredients of Aurelia’s binding expressions
4.4. Binding commands
4.4.1. One-way bindings
4.4.2. String-interpolation binding
4.4.3. Two-way bindings
4.4.4. One-time binding command
4.5. Handling DOM events
4.5.1. Trigger
4.5.2. Delegate
4.6. my-books project status
Summary
Chapter 5. Value converters and binding behaviors
5.1. Creating a value converter
5.2. Applying value converters to lists
5.2.1. Value-converter composition
5.3. Binding behaviors
5.3.1. Throttle and debounce binding behaviors
5.3.2. updateTrigger binding behavior
5.3.3. signal binding behavior
5.4. my-books project status
Summary
Chapter 6. Intercomponent communication
6.1. Aurelia components
6.1.1. The component lifecycle
6.2. Enhancing my-books
6.2.1. Aurelia’s three core intercomponent-communication techniques
6.3. Passing data to child components with data binding
6.4. Event Aggregator to the rescue
6.4.1. The Event Aggregator pattern
6.4.2. The Aurelia Event Aggregator
6.4.3. Fixing book removal with the Event Aggregator
6.5. Extending my-books
6.5.1. Step 1: Installing the required modules
6.5.2. Step 2: Adding the date-format value converter
6.5.3. Step 3: Enhancing the book API
6.5.4. Step 4: Creating the book component
6.5.5. Step 5: Creating the edit-book component
6.5.6. Step 6: Modifying the book-list component
6.5.7. Step 7: Modifying the books component
6.6. Custom events
6.6.1. Browser support for custom events
6.6.2. Using custom events
6.6.3. Implementing the star-rating component
Summary
Chapter 7. Working with forms
7.1. Working with forms in my-books
7.2. Check boxes
7.3. Radio elements
7.3.1. Step 1: Modifying the book API
7.3.2. Step 2: Modifying the Books view-model
7.3.3. Step 3: Passing the genres and shelf arrays down the component hierarchy
7.3.4. Step 4: Modifying the EditBooks view-model
7.3.5. Step 5: Modifying the edit-book view
7.4. Select controls
7.4.1. Single-value select binding
7.4.2. Multiple-value select binding
7.5. Validation
7.5.1. The Aurelia validation plugin
7.5.2. Aurelia validation overview
7.5.3. Adding validation to the edit-books form
Summary
Chapter 8. Working with HTTP
8.1. Overview of the Aurelia HTTP toolkit
8.2. Using aurelia-fetch-client
8.2.1. Adding fetch to my-books
8.2.2. Intercepting and manipulating requests
8.3. Working with aurelia-http-client
Summary
Chapter 9. Routing
9.1. Understanding client-side routing
9.2. Introducing the Aurelia router
9.2.1. Basic configuration
9.2.2. Routing metadata
9.3. Passing route data to components
9.3.1. Route option types
9.3.2. Adding the user-management pages
9.4. Specifying route modules dynamically
9.5. The screen-activation lifecycle and the route pipeline
9.5.1. The screen-activation lifecycle
9.5.2. Pipeline steps
9.6. Aurelia’s 404
9.6.1. Handling an unknown route: option 1, moduleId
9.6.2. Handling unknown routes: option 2, a function
9.7. Redirecting routes
9.8. View ports
9.9. Extending my-books with layouts
9.9.1. Creating the layouts
9.9.2. Adding the login view
9.9.3. Modifying the routing configuration
9.10. my-books project status
Summary
Chapter 10. Authentication
10.1. Client-side authentication
10.1.1. Token-based authentication
10.1.2. Comparing cookie- and token-based authentication approaches
10.1.3. JWT format
10.2. Securing my-books
10.2.1. Authentication architecture
10.2.2. Creating the authentication service
10.2.3. Implementing login
10.2.4. Intercepting HTTP requests
10.2.5. Routing redirection
10.2.6. Filtering the navigation bar
10.3. my-books project status
Summary
Chapter 11. Dynamic composition
11.1. Static vs. dynamic composition
11.2. The <compose> custom element
11.3. Dynamically composed views
11.3.1. Creating partial views
11.3.2. Creating a configurable form with dynamic composition
Summary
Chapter 12. Web Components and Aurelia
12.1. Introducing Web Components
12.2. HTML Imports
12.3. HTML Templates
12.3.1. Using HTML Templates in Aurelia
12.4. Custom elements
12.5. The Shadow DOM
12.5.1. Using the Shadow DOM with Aurelia
12.6. Creating the my-books share-book component
12.6.1. Adding the Share button
12.6.2. Creating the ux-card component
12.6.3. Creating the subcomponents
12.6.4. Creating the share-book-card component
12.6.5. Tying it all together
12.7. my-books project status
Summary
Chapter 13. Extending Aurelia
13.1. Overriding Aurelia’s default conventions
13.1.1. Specifying a view template relative path with @useView
13.1.2. Handling custom-element views manually with @noView
13.1.3. Specifying views as template strings with @inlineView
13.1.4. Explicitly naming custom elements with @customElement
13.1.5. Explicitly naming custom attributes with @customAttribute
13.2. Creating an inspect custom binding behavior
13.3. Creating a Selectize.js custom attribute
13.4. my-books project status
Summary
Chapter 14. Animation
14.1. Getting started with SPA animations
14.1.1. When and what should you animate?
14.1.2. CSS animations
14.1.3. JavaScript animations
14.2. Aurelia’s animation framework
14.2.1. The animation API
14.3. CSS animations with Aurelia
14.3.1. Adding transitions on au-enter
14.3.2. Adding transitions when classes are added or removed
Summary
3. Aurelia in the real world
Chapter 15. Testing
15.1. Testing SPAs
15.2. Get started testing with the Aurelia CLI
15.2.1. Creating a Hello World test
15.3. Testing value converters
15.4. Testing services
15.5. Testing custom elements
15.6. Testing custom attributes
15.7. End-to-end testing
15.7.1. Testing the login user stories
15.7.2. Running the tests
Summary
Chapter 16. Deploying Aurelia applications
16.1. SPA bundling
16.1.1. What about HTTP/2?
16.2. Bundling and the Aurelia CLI
16.2.1. Aurelia environments
16.2.2. Versioning bundles
16.2.3. Splitting application bundles
16.3. Deploying my-books to Firebase
Summary
Appendix. Installation and setup
A.1. Installing Node.js
A.2. Installing the Aurelia CLI tool
A.3. Troubleshooting
A.4. Adding Bootstrap
Installing Bootstrap 4
A.5. Adding Font Awesome
A.6. Installing the Aurelia validation plugin
A.7. Setting up my-books-server
Installing MongoDB on macOS
Installing MongoDB on Linux
Installing MongoDB on Windows
Cloning the my-books-server repository
Starting MongoDB server
Starting the MongoDB server
Installing the aurelia-http-client package
Enabling my-books-server JWT authentication
My-books-server: user credentials
A.8. My-books book-sharing-component prerequisites
Installing aurelia-dialog
Updating the my-books stylesheet
A.9. Installing selectize.js
A.10. Installing aurelia-animator-css
Installing the npm package using the Aurelia CLI
Adding the plugin to the main module
A.11. Installing Aurelia testing dependencies
Aurelia glossary
Aurelia CLI cheat sheet
Index
List of Figures
List of Tables
List of Listings
Preface
I first came across Aurelia in a .NET Rocks! podcast interview with the
framework’s creator, Rob Eisenberg. I particularly remember that evening
because I had more than my usual podcast-listening time commuting from work,
due to a flat tire (the third that month—but that’s a different story). At this stage,
Rob had just started working on a new single-page application (SPA) framework,
which differentiated itself from most other popular frameworks by its focus on
clean code and use of convention over configuration to eliminate boilerplate
code. Having used other frameworks like Caliburn Micro—which Rob had
created for the WPF/Silverlight space for desktop applications—the idea of a
framework that followed a similar approach in the world of JavaScript
immediately struck a chord with me. As is often the case with information
gleaned from podcasts during a daily commute, I stashed away the knowledge
and didn’t think about it for some time.
Later that year, we were starting a new frontend project and had to choose an
SPA framework. With the plethora of options available, the process was
daunting. After trawling the web for information that would allow us to make the
best decision for the team moving forward, I realized that all the available
options provided the same benefits, and much of the choice came down to how
much the team would enjoy working with the framework, how quickly we could
get something up and running, and how easy it would be to maintain the project
going forward. The nugget of information gleaned from the podcast earlier that
year came back to me, and I started comparing code samples from Aurelia to
other frameworks. The beauty and simplicity of the Aurelia MV* model for
building SPAs by using components contrasted starkly with the other approaches
I came across. This was enough for us to give Aurelia a shot.
Throughout the course of the next year, we built three projects with Aurelia, the
first of which went from proof of concept to functioning production application
in only a few weeks. This led to an unofficial tour of UK Aurelia user groups,
where I had the privilege of meeting some super-smart people working in the
.NET and web-development space. At this stage, Aurelia was still in alpha and
early beta, and many people hadn’t come across it yet. Although initially
sceptical of yet another SPA framework, many developers (particularly in the
.NET space) were impressed by Aurelia’s intuitive, component-based
development style.
The content of these talks (getting started with Aurelia, and component-based
development with Aurelia) turned out to be the seeds that grew into this book.
Because I (and most other developers I come across) tend to learn far better by
example than by theory alone, I’ve built the content around a fictional virtual-
bookshelf application (like Goodreads.com) called my-books. You’ll start by
creating a bare-bones application via the Aurelia CLI and then progressively
layer on various features that users would want in a virtual bookshelf.
Fortunately, you can fit more into a book than you can a one-hour talk. In this
book, I aim to teach you everything you need to know to build compelling, real-
world applications in Aurelia from the ground up.
Acknowledgments
Some people would say I’m crazy to even thinking about attempting to write a
book while at the same time welcoming a newborn into my family earlier this
year, and they’d be right! Writing a book was, to put it mildly, more work than
expected. I’d like to thank my wife Matilda for supporting me throughout the
process and taking on more than her fair share of our family responsibilities. I
couldn’t have gotten through it without her.
Next, I thank my editor at Manning, Toni Arritola. As I’m writing this, I’m
remembering back to when I received my first round of feedback for chapter 1.
There was more red than white on the page after all the review comments! I’ve
learned a great deal from working with Toni over the past year. This book and
my writing technique have benefited beyond measure from her involvement. I’d
also like to thank my Manning technical development editor, Nick Watts, and
tech proofer Troi Eisler. Their input made an enormous difference in the quality
and clarity of my technical explanations and code samples.
Next, I thank everyone who submitted feedback on the Manning forum and the
Aurelia in Action GitHub repository throughout the MEAP process. It’s been a
great motivation to see people reading the chapters and working through them as
they’ve been released. Much of the feedback has been factored into the book
throughout the MEAP. I also thank the book’s technical peer reviewers, led by
Ivan Martinović: Alain Couniot, Alessandro Campeis, Álvaro Falquina, Ashley
Grant, Aurelien Gounot, Binh Vo, Geoff Barto, Jeff Smith, Joseph Tingsanchali,
Luca Campobasso, Matt Harting, Peter Perlepes, Phil Taffet, Philippe Charrière,
and Wayne Mather.
Finally, I thank the Aurelia core team, both for their wonderful contributions to
the Aurelia open source community by creating and maintaining the project, and
for their assistance with the book. Special thanks go to Ashley Grant for
reviewing some of the early chapters and providing feedback that I was able to
use throughout the rest of the book, and of course to Rob Eisenberg, who was
fundamental in helping to get the book out to the Aurelia community.
About this book
When I first began web development with .NET 2.0 and ASP.NET Web Forms,
there was only one paradigm for web applications: the server-side paradigm.
This pattern involves making a request for the full page content, including
scripts, images, and ads, every time the user performs an action on the page. For
the kinds of web applications we were building when I started, this paradigm
worked for the most part. If users wanted a richer and more interactive
experience, it was typically implemented as a desktop application.
With the introduction of jQuery, we saw the possibility of pushing more of the
logic that was previously done on the server side of our websites to the client
side, communicating back and forth with the server using AJAX. The problem
with this approach was that jQuery doesn’t provide guidance for how to structure
a client-side application, so many projects implemented during this era devolved
into spaghetti code as the size and complexity of the client-side application grew.
Smart developers recognized this problem and took the opportunity to create
frameworks to simplify building rich user interfaces on the client side. Popular
examples include Angular1, Backbone.js, and Knockout.js. With these
frameworks, it became easy to write full applications as SPAs that would
traditionally have been built as desktop apps.
A lot has changed since these frameworks were introduced. Over the past eight
years, we’ve seen an almost exponential improvement in both web browser
platform development and the JavaScript language itself. With these
improvements, opportunity came knocking with a chance to build something
better. Aurelia has answered. It takes full advantage of this new environment,
allowing you to build sophisticated SPAs with less framework-specific code than
was possible in the past.
Aurelia in Action was written to give you a kick-start in building SPAs with
Aurelia. To begin, we’ll walk through a mental model that describes how the
framework works and how the main building blocks fit together. From there,
we’ll begin developing the my-books virtual bookshelf sample application. This
application starts as a simple shell, which you’ll enhance as you learn the
various tools and techniques in the Aurelia framework. By the end of the book,
you’ll have built my-books into a full-featured SPA with reusable components,
form validation, routing, HTTP interaction, and more. This approach will get
you up to speed with Aurelia best practices, while at the same time providing a
solid reference project that you can return to for inspiration when building your
own Aurelia applications.
Who should read this book
Aurelia in Action is intended to be read by intermediate developers with at least
a basic level of web-development experience. If you’ve built web applications
with a server-side technology like ASP.NET MVC or Ruby on Rails with a
smattering of jQuery, or have dabbled in the path with another client-side
technology like Backbone.js or Angular, you’ll have all the prerequisite
knowledge you need to grok the concepts and exercises presented here. Like most
web-development technologies today, you can learn most of what you need about
Aurelia by reading the online documentation and blogs. But what I aim to do is
save you time and effort by weaving all the information you need to know about
Aurelia into a consistent narrative that takes you all the way from creating a
basic Hello World application to a fully functional SPA, ready for deployment to
production.
Roadmap
The book has 3 parts and 16 chapters. Part 1 introduces Aurelia, covering the
key framework building blocks and giving you a bird’s-eye view of the kinds of
problems Aurelia can help you solve:
Chapter 1 outlines what Aurelia is, what kinds of applications you can build with
it, and why you’d want to do that in the first place.
Chapter 2 introduces the my-books sample application and steps through the
process of creating the first iteration of this application using the Aurelia CLI.
We’ll pause at key points in the process to give you glimpses of key framework
concepts like components, routing, and event handling.
Part 2 explores each of the key tools and techniques available in the Aurelia
framework. These chapters go beyond the basics, covering everything you’ll
need to build real-world applications:
Chapter 3 takes a more in-depth look at two of the major component types you’ll
use in Aurelia: custom elements and attributes. You’ll style the my-books
application, refactor to components, and get your first look at how to integrate
third-party JavaScript dependencies.
Chapter 4 looks at the Aurelia templating system. You’ll learn the ins and outs of
rendering data to an Aurelia view and handling user interaction with DOM
events.
Chapter 5 introduces two of the more advanced component types in your Aurelia
tool belt: value converters and binding behaviors. You’ll use these component
types to create an autocomplete-style filterable table, and optimize some of the
my-books user interactions.
Chapter 6 outlines the Aurelia component lifecycle. You’ll enhance the my-
books application, refactoring to more fine-grained components and wiring them
together using intercomponent communication techniques like the Event
Aggregator and custom events.
Chapter 7 is all about forms. You’ll add an edit-book form to my-books, learning
how to use check boxes, radio controls, form validation, and more.
Chapter 8 covers HTTP interaction. You’ll connect your burgeoning SPA to a
Node.js REST API using Aurelia’s HTTP client libraries.
Chapter 9 introduces the concept of SPA routing, why it’s important, and how
you can use Aurelia’s router to add sophisticated URL-based navigation to your
applications.
Chapter 10 covers authentication, answering questions like, “How can I secure
an application without cookies?” You’ll combine techniques from previous
chapters, like value converters, routing, and HTTP interceptors, to secure the
my-books application.
Chapter 11 gets fancy with dynamic component composition. You’ll learn how
to build your views at runtime, adding a new dimension of flexibility to your
applications.
Chapter 12 introduces the web-component standards and shows you how to use
features like the shadow DOM to create templated components.
Chapter 13 goes deep into extending Aurelia, showing you how to override
Aurelia’s default conventions, inspect what the binding system is doing under
the hood, and create custom attributes that can take a dynamic set of options.
Chapter 14 describes the basics of Aurelia’s animation system and framework
hooks, teaching you how to animate components using CSS or JavaScript
animations.
Part 3 covers what you’ll need to know to prepare a production-ready Aurelia
application package:
Chapter 15 shows how you can use a combination of unit testing and end-to-end
testing to iterate quickly on your projects with the confidence that they’re
working as designed.
Chapter 16 gives you the tools you’ll need to build a deployment package and
release to production. You’ll package and deploy the my-books application to the
Firebase cloud host.
The first two chapters will help you understand the high-level concepts in the
Aurelia framework, so I recommend reading them first to build a mental model
of how everything fits together. These chapters will also help you set up your
development environment and create the initial version of the my-books project.
Chapters 3–6 also cover key concepts fundamental to the remainder of the book,
so unless you’ve already got a basic knowledge of the Aurelia framework, it
would be a good idea to read these before moving on. Each chapter builds on the
same sample application, so the remainder of the book is designed to be read
sequentially. But if you do want to jump ahead to a specific topic, you can do so
by cloning the project’s GitHub repository and changing your working directory
to the prior chapter. For example, if you wanted to jump to chapter 10, you could
move to the Chapter-9-Complete directory to begin right where chapter 9 left
off.
About the code
This book contains many examples of source code both in numbered listings and
inline with normal text. In both cases, source code is formatted in a fixed-width
font like this to separate it from ordinary text.
In many cases, the original source code has been reformatted; we’ve added line
breaks and reworked indentation to accommodate the available page space in the
book. Additionally, comments in the source code have often been removed from
the listings when the code is described in the text. Code annotations accompany
many of the listings, highlighting important concepts.
Source code is provided for chapters 2–16. Code listings are available on the
publisher’s website at www.manning.com/books/aurelia-in-action and on
GitHub at https://github.com/freshcutdevelopment/Aurelia-in-Action. Some of
the code listings and exercises are also provided as gists that can be run
interactively with GistRun: https://gist.run. Such examples are clearly marked.
Because the book follows the iterative development of one sample application,
there’s a folder per chapter in the GitHub repository. They follow the convention
Chapter-[Number]-Complete. If you run into problems with any of the code
samples, you can use the completed versions to cross-reference and troubleshoot
problems with your project, or skip to the completed version. The GitHub
repository is an active, open source project, so any feedback is welcomed in the
form of a GitHub issue or pull request.
Online resources
Need additional help? The Aurelia project website (http://aurelia.io) is the best
place to go to review the online documentation and ask for help. The site
includes a discourse forum (https://discourse.aurelia.io) frequented by many
community members and Aurelia core framework contributors. Asking a
question here will get you the help you need from developers working in the
trenches with Aurelia.
Book forum
Purchase of Aurelia in Action includes free access to a private web forum run by
Manning Publications where you can make comments about the book, ask
technical questions, and receive help from the author and from other users. To
access the forum, go to https://forums.manning.com/forums/aurelia-in-action.
You can also learn more about Manning’s forums and the rules of conduct at
https://forums.manning.com/forums/about.
Manning’s commitment to our readers is to provide a venue where a meaningful
dialogue between individual readers and between readers and the author can take
place. It is not a commitment to any specific amount of participation on the part
of the author, whose contribution to the forum remains voluntary (and unpaid).
We suggest you try asking him some challenging questions lest his interest stray!
The forum and the archives of previous discussions will be accessible from the
publisher’s website as long as the book is in print.
Random documents with unrelated
content Scribd suggests to you:
näiden herramiesten huomiota tai pilannut heidän työnsä rauhallista
näyttämöä. Kohtasitten kristittyjä ja herrasmiehiä, sir."
"Maksoin paikastani kuten muutkin", sanoi Swinney. "Eikö isäni
ostanut osakk—?"
"Hiljaa, sir! Arvoisa isänne kyllä osti tämän yrityksen osakkeita,
jotka tulevat jonakin päivänä tuottamaan hänelle suurenmoisen
voiton. Hän siis todellakin hankki osakkeita, muuten ette olisi
koskaan täällä. Voin tyydytyksellä sanoa, että jokaisella täällä
olevalla nuorella ystävälläni on isä, veli, rakas sukulainen tai ystävä,
jolla on samanlainen suhde yritykseemme; eikä yksikään heistä ole
ilman motivaatiota hankkimaan, hyvää komissiota vastaan, muita
henkilöitä liittymään mainioon yhdistykseemme. Mutta, sir, minä olen
sen johtaja. Näette minun allekirjoittaneen työsopimuksenne; ja
samalla tavoin minä, John Brough, peruutan sen. Menkää pois, sir!
— jättäkää meidät — luopukaa perheestä, joka ei voi enää pitää
teitä rinnoillaan! Herra Swinney, olen itkenyt — olen rukoillut,
ennenkuin tulin tähän johtopäätökseen; olen kuunnellut neuvoja, sir,
ja olen lujasti päättänyt. Lähtekää luotamme!"
"En kuitenkaan ilman kolmen kuukauden palkkaa, herra Brough."
"Se maksetaan isällenne, hyvä herra."
"Vielä mitä! minäpä kerron Teille jotakin, Brough, minä olen
täysikäinen, ja jollette Te maksa minulle palkkaani, niin minä laitan
Teidät arestiin — lempo soi, sen minä teen! Minäpä tyyrään Teidät
tyrmään, taikka ei nimeni ole Bob Swinney!"
"Kirjoittakaa, herra Roundhand, tälle turmeltuneelle nuorelle
miehelle kolmen kuukauden palkan määräys."
"Kaksikymmentä yksi puntaa ja viisi, Roundhand, eikä leimasta
mitään", huusi julkea Swinney. — Siinä se on, kuitataan! Ei Teidän
tarvitse osottaa sitä pankkiirilleni. Ja jos joku Teistä, pojat, haluaa
lasillisen punssia tänä iltana kello kahdeksan, niin Bob Swinneyn luo!
Maksusta ei puhetta. Jos herra Brough tahtoisi tehdä minulle sen
kunnian ja lyöttäytyisi joukkoon? Tulkaa pois, elkää huoliko
kieltäytyä!"
Me emme jaksaneet kestää enään tätä häpeämättömyyttä, vaan
purskahdimme nauramaan kuin villityt.
"Ulos huoneesta!" kiljui herra Brough, jonka kasvot olivat menneet
aivan sinisiksi. Ja Bob otti naulakosta vaalean hattunsa ja marssi
matkaansa, "savipönttönsä", kuten hän sitä nimitti, vahvasti
kallellaan. Hänen mentyään herra Brough piti meille toisen luennon,
jonka neuvoja me kaikki päätimme käyttää hyväksemme, ja astuen
Roundhandin pöydän ääreen, asetti kätensä kassanhoitajan olalle ja
katsoi pääkirjaan.
"Paljonko rahaa on tänään tullut, Roundhand?" sanoi hän hyvin
ystävällisesti.
"Se leskihän se toi rahansa: yhdeksänsataa ja neljä puntaa
kymmenen shillinkiä ja kuusi pennyä. Kapteeni Sparr on maksanut
osakkeensa täyteen, mutta hän nurisee ja sanoo, ettei hänellä ole
enään mitään; viisikymmentä osaketta, kaksi maksuerää, tekee
kolme viideskymmenesosaa, herra johtaja."
"Hän nurisee aina!"
"Hän sanoo, ettei hänellä ole penniäkään, millä ravita
ruumisraukkaansa osingon jakopäivään asti."
"Entä mitä muuta?"
Herra Roundhand selaili kirjan läpi ja sai kokoon kaikkiaan
yhdeksäntoista sataa puntaa. Meidän liikkeemme luisti erinomaisesti
nykyisin. Vaan siihen aikaan kun minä tulin konttoriin, meidän oli
tapana istuskella ja naureskella, laskea leikkiä ja lukea lehtiä päivät
päästään, ja hirveällä hopulla laittautua paikoillemme, kun joku
sattumoisin asioissaan astui sisään. Silloin ei Brough koskaan
välittänyt naurustamme tai laulustamme ja oli mitä parhaissa
väleissä Bob Swinneyn kanssa. Mutta se oli entisiin aikoihin, ennen
kun me olimme päässeet oikein varuksiimme.
"Yhdeksäntoista sataa puntaa, ja tuhat puntaa osakkeita!
Oivallista, Roundhand — oivallista, hyvät herrat! Muistakaa, että
jokainen osake, minkä Te tuotte lisää, tuottaa Teille viisi prosenttia
käteistä! Pitäkää mielessä ystävänne — pysykää uskollisesti
paikallanne — eläkää säännöllisesti — toivon, ettei Teistä kukaan
unohda käydä kirkossa. Kuka astuu herra Swinneyn paikalle?"
"Herra Samuel Titmarsh."
"Herra Titmarsh, minä onnittelen Teitä. Antakaa minulle kätenne,
hyvä herra. Te olette nyt tämän yhtiön kahdestoista kirjanpitäjä ja
Teidän palkkanne on niinmuodoin kasvanut viisi puntaa vuodessa.
Kuinka jaksaa Teidän arvoisa äitinne, hyvä herra — Teidän kallis ja
erinomainen äiti-rouvanne? Hyvässä voinnissa toivoakseni? Ja minä
palavasti rukoilen, että tämä konttori kauan, kauan saa maksaa
hänelle vuosieläkkeensä! Pankaapa muistiin, että jos hänellä on
enemmän rahoja talletettavana, niin hän nyt saa korkeamman koron
kuin viimeksi, koska hän on vuotta vanhempi, ja viisi prosenttia
Teille, poikaseni! Miksi ette Te yhtä hyvin kuin joku muu? Nuoret
miehet ovat aina nuoria miehiä eikä kymmenen punnan paperi ole
haitaksi. Vai miten, herra Abednego?"
"Oh, eihän toki!" vastaa Abednego, kolmas kirjanpitäjä, joka juuri
oli kielinyt Swinneystä, ja hän rupesi nauramaan, kuten me tosiaan
kaikkikin teimme, milloin hyvänsä herra Brough laski jotakin pilan
tapaista, emme siksi että se oli pilapuhetta, vaan meidän oli tapana
nähdä tarkotus hänen kasvojensa ilmeestä.
"Noo, Roundhand", sanoo hän, "sananen Teidän kanssanne muista
asioista. Rouva Brough tahtoo tietää, miksi ihmeessä Te ette koskaan
eksy Fulhamiin."
"Hyvänen aika, se on liika ystävällistä", sanoi Roundhand perin
ihastuneena.
"Mainitkaa joku päivä, ukkoseni. Sanotaan lauantaina, ja ottakaa
yömyssy mukaanne."
"Te olette tosiaan liika ystävällinen. Minä olisin ylenmäärin
ihastunut, mutta —"
"Mutta — ei mitään muttaa, ukkoseni. Kuulkaapas, kun
rahaministeri osottaa minulle sen kunnian, että syö päivällistä
kanssamme, ja minä tahdon, että Te kohtaatte hänet. Sillä asia on
se, että minä olen Hänen Ylhäisyydelleen kehunut Teitä
parhaimmaksi kassanhoitajaksi koko saarivaltakunnassa."
Roundhand ei voinut kieltäytyä seuraamasta tällaista kutsua,
vaikka, kuten hän oli kertonut meille, rouva Roundhand ja hän olivat
aikeissa viettää lauantain ja sunnuntain Putneyssä,[6] ja me, jotka
tiesimme minkälaista mies-polosen elämä oli, olimme varmat siitä,
että pääkirjanpitäjä saisi koreat haukkumiset vaimoltaan, kun tämä
kuulisi, mistä oli kysymys. Hän oli näetsen kovasti nyreissään rouva
Broughille, sillä rouva Brough, jolla oli vaunut, väitti, ettei tiennyt,
missä Pentonville[7] sijaitsi, eikä siksi voinut käydä tervehtimässä
rouva Roundhandia. Vaikka olisihan toki luullut hänen ajajansa
löytävän tien.
"Jaha, ja sitten, Roundhand", jatkoi johtajamme, "kirjoittakaa,
tehkää hyvin, seitsemän sadan määräys. Hoo, elkäähän repäiskö
silmiänne, mies, en ole karkuun lähdössä. Kas niin — seitsemän
sataa — ja yhdeksänkymmentä, sanokaamme yksin tein. Meillä on
yhtiökokous lauantaina, mutta elkää olko huolissanne, minä kyllä
teen niistä tilin, ennen kun ajetaan luokseni. Ministerin otamme
vaunuihin Whitehallissa".[8]
Niin sanoen herra Brough käänsi maksuosotuksen kokoon ja hyvin
sydämellisesti puristaen herra Roundhandin kättä, nousi nelivaljakon
vetämiin vaunuihinsa (hän käytti aina neljää hevosta, Cityssäkin,
missä se on niin vaikeata), jotka odottivat häntä konttorin ovella.
Bob Swinneyn oli tapana sanoa, että Brough velkoi yhtiötä
kahdesta hevosesta, mutta ei koskaan ollut uskominen puoliakaan
Bobin puheista, hän oli semmoinen koiranleuka ja pilkkakirves.
En tiedä, mitenkä lie ollut, mutta minusta ja eräästä Hoskins
nimisestä pojasta (yhdestoista kirjanpitäjä), joka asui kanssani
Salisburyn torikorttelissa, Fleet-kadulla, missä meillä oli hauska
asumus toisessa kerroksessa, tuntui huilunsoittelumme tavattoman
ikävältä tänä iltana, ja kun ehtoo oli hyvin kaunis, lähdimme
kuljeksimaan West Endiin[9] päin. Saapuessamme vastapäätä
Covent Gardenin teatteria olimme aivan lähellä "Globen krouvia" ja
muistimme samalla Bob Swinneyn vieraanvaraisen kutsun. Emme
olleet mitenkään kuvitelleet, että hän oli tarkottanut totta kutsullaan,
mutta arvelimme, että saattaisi sittenkin pistäytyä sisälle; missään
tapauksessa siitä ei voinut vahinkoa olla.
Vaan sielläpä me tapasimmekin Bobin takasalissa, missä hän oli
luvannut olla, istumassa pöydän päässä, paksun tupakansavun
keskellä, ja kahdeksantoista pojistamme kalistelemassa ja
hakkaamassa lasejansa pöytään.
Minkä rähinän he nostivat meidän astuessamme sisään! "Hurraa!"
huusi Bob, "tässä tulee kaksi lisää! Vielä kaksi tuolia, Mary, vielä
kaksi lasia, vielä lämmintä vettä ja vielä kaksi kippoa viinaa! Kukapa
herran nimessä olisi uskonut näkevänsä Titin täällä?"
"Niin", sanoin minä, "me tulimme tänne aivan sattumalta."
Nämät sanat synnyttivät uuden kauhean metakan — seikka oli
nimittäin tosiaan se, että joka mies näistä kahdeksastatoista oli
sanonut tulleensa sattumalta. Miten olikaan, hupaisen illan se
sattuma meille antoikin, ja antelias Bob Swinney maksoi joka
killingin.
"Hyvät herrat!" sanoi hän maksettuaan laskun, "olen kutsunut
Teidät juomaan kunnioitettavan herra John Broughin terveydeksi,
koska minun on kiittäminen häntä siitä kahdenkymmenen yhden
punnan ja viiden shillingin lahjasta, minkä hän antoi minulle tänä
aamuna. Mitä sanonkaan — kaksikymmentä yksi ja viisi? Ei, vaan
sen ja vielä yhden kuukauden palkan, joka minun olisi ollut
maksaminen — sakkoa — viimeistä penniä myöden, — lempo soi!
siitä että olin lähtenyt paikastani, kuten olin aikonut tehdä huomen-
aamulla. Minä olen saanut uuden paikan, erinomaisen paikan, voin
vakuuttaa. Viisi guineaa viikossa, kuusi matkaa vuodessa, oma
hevonen ja kevät kiesit ja kuljettava Länsi-Englannissa öljyä ja
valaanrasvaa tarjoten. Hornaan kaasuyhtiö, ja eläköön herrat Gann
ja Kumpp., Thames-kadulla Lontoon Cityssä!"
Olen näin seikkaperäisesti kertonut West Diddlesex
vakuutusyhtiöstä ja herra Broughista, sen toimeenpanevasta
johtajasta (vaikkei yhtiötä eikä sen johtajaa, hyvin ymmärrettävästi
ole mainittu oikealta nimeltä), sen tähden että minun ja
timanttineulani kohtalo oli salaperäisellä tavalla yhteydessä
kummankin kanssa, kuten kohta näytän.
Teidän täytyy saada tietää, että West Diddlesexin pojat suuresti
kunnioittivat minua, sen tähden, että minä tulin paremmasta
perheestä kuin enimmät heistä, olin saanut klassillisen kasvatuksen,
ja etenkin, koska minulla oli rikas täti, rouva Hoggarty, josta, täytyy
se tunnustaakseni, minun oli tapana vankasti kerskailla. Ei ole
mitenkään haitallista olla arvossa pidetty tässä maailmassa, mikäli
olen huomannut, ja ellei hieman kehuskele puolestaan, niin saattaa
olla varma siitä, ettei tuttavista kenkään näe vaivaa toisen tähden
eikä kerro maailmalle hänen ansioitaan.
Niin että kun minä kotona käytyäni palasin konttoriin ja asetuin
sijalleni vanhan päiväkirjan ääreen vastapäätä Birchin-kujaa päin
antavaa likaista ikkunaa, annoin piankin poikasten tietää, että vaikka
rouva Hoggarty ei ollut suonut minulle suurta rahasummaa, kuten
olin odottanut — minä olin todella luvannut tusinalle heistä pitää
kekkerit joen varrella, jos luvatut rikkaudet tulisivat minulle — minä
annoin heidän tietää, sanon, että vaikka tätini ei ollut suonut minulle
yhtään rahaa, hän oli lahjoittanut minulle komean timantin, joka oli
ainakin kolmenkymmenen guinean arvoinen, ja että minä jonakuna
päivänä prameilisin liikkeessä timantti rinnassani.
"Oo, antakaa nähdä se!" sanoo Abednego, jonka isä oli väärien
jalokivien ja kultaketjujen kauppias Hanway Yardissa, ja minä
lupasin, että hänen piti saada se silmätäkseen, heti kun se oli
uudessa asussa. Kun kaikki taskurahanikin olivat lopen huvenneet
(istuinpaikka vaunuissa kotiin ja takaisin, viisi shillinkiä piikatytölle
kotona, kymmenen tätini neitsyelle ja palvelijalle, viisikolmatta
shillinkiä häviötä whistipelissä, kuten jo kerroin, ja viisitoista shillinkiä
kuusi pennyä pieniin hopeasaksiin erään henkilön armaille pikku
sormille), niin Roundhand, joka oli perin hyväsydäminen mies, kutsui
minut päivälliselle ja antoi etukäteen kuukauden palkan: seitsemän
puntaa yhden shillingin ja kahdeksan pennyä. Roundhandin kotona
Myddeltonin torikorttelissa Pentonvillen varrella syötäessä vasikan
selkäpaistia ja juotaessa lasillista portteria opin tuntemaan ja
näinkin, kuinka pahasti vaimo häntä piteli, niinkuin taannoin kerroin.
Poika parka! — meidän kaikkien alakirjanpitäjäin mielestä oli mainio
asia istua yksinään pöytänsä ääressä ja nostaa viisikymmentä puntaa
kuussa, kuten Roundhand, mutta minusta tuntuu, että Hoskinsin ja
minun oli, luritellessamme yhdessä huilua toisen kerran
kamarissamme Salisburykorttelissa, koko paljoa parempi olla kuin
päämiehemme — ja sopusointukin eheämpi, vaikka meidän
soittelumme oli kylläkin säälittävää.
Eräänä päivänä Gus Hoskins ja minä pyysimme Roundhandilta
lupaa saada lähteä jo kello kolmelta, meillä kun oli erityistä asiaa
West Endiin. Hän tiesi, että se koski Hoggartyn isoa timanttia, ja
antoi luvan, ja me matkaan. Saavuttuamme St. Martin's-kujalle Gus
osti sikaarin näyttääkseen juhlalliselta, ja puhalteli sitä koko matkan
kujaa ja lehtokujia pitkin Coventry-kadulle asti, missä herra
Poloniuksen kauppa on, kuten jokainen tietää.
Ovi oli auki, ja useat vaunut täynnä naisia pysähtyivät ulkopuolelle
ja purkivat kuormansa. Gus pisti kädet taskuunsa — siihen aikaan
käytettiin hyvin laajoja housuja, joissa oli avarat laskokset ja hyvin
kapeat lahkeen suut, mistä saappaat tai puolisaappaat pistettiin ulos
(hienostolla oli saappaat, mutta me Cityn puotipojat, joilla oli
kahdeksankymmenen punnan vuosipalkka, tyydyimme
puolisaappaisiin) —, ja kun Gus levitti housujansa niin kauas
lonkistaan kuin mahdollista ja tuprutteli tupakkaansa ja iski katuun
kenkiensä raudoitettuja korkoja ja kun hänellä lisäksi oli niin nuoreksi
mieheksi perin tuuhea poskiparta, niin hän todella näytti oikein
komealta pojalta, jota jokainen pitikin merkittävänä henkilönä.
Hän ei kuitenkaan tahtonut tulla puotiin sisälle, vaan jäi ulos
katsoa tuijottamaan akkunassa olevia kultaisia patoja ja kattiloita.
Minä astuin sisään ja vähän yskittyäni ja ryittyäni, sillä en ollut
koskaan ennen käynyt niin hienossa paikassa, pyysin eräältä
herrasmieheltä saada puhutella herra Poloniusta.
"Millä saatan Teitä palvella, hyvä herra?" sanoo herra Polonius,
joka sattui seisomaan siinä vallan vieressä palvellen kolmea
naisihmistä, yhtä hyvin vanhaa ja kahta nuorta, jotka tarkasti
tutkivat muuatta helmistä kaulakoristetta.
"Tämä koriste on luullakseni ennenkin ollut Teidän huostassanne,
hyvä herra", sanoin minä vetäen esiin solkeni takin taskusta. — Se
on kuulunut tädilleni, rouva Hoggartylle Castle Hoggartysta."
Vanha nainen, joka seisoi lähellä, katsahti taakseen, kun tätä
puhuin.
"Minä myin hänelle kultaiset kaulavitjat ja lyövän taskukellon
vuonna 1795", sanoi herra Polonius, joka tahtoi osottaa muistavansa
kaikki, "ja kapteenille hopeaisen punssikauhan. Miten jaksaa majuri
— eversti — kenraali — hm! hyvä herra?"
"Kenraali", sanoin minä. "Ikäväkseni täytyy minun sanoa", vaikka
olin vallan ylpeä siitä, että tämä hieno mies puhutteli minua tällä
tapaa, "herra Hoggartya ei — ole enään. Mutta minun tätini on
lahjoittanut minulle tämän — tämän korukalun, joka, kuten näette,
sisältää hänen miehensä kuvan. Sitä minä pyydän Teitä, hyvä herra,
huolella säilyttämään, ja tätini haluaa, että te laitatte tämän timantin
sievästi uusiin puitteisiin."
"Sievästi ja soreasti, tietenkin, hyvä herra."
"Niin, nykyaikaiseen tapaan, ja lähettäkää lasku hänelle. Siinähän
on tuon korukapineen ympärillä melko määrä kultaa, jonka Te
tietenkin suvaitsette laskea pois."
"Viimeistä pennyä myöten", sanoo herra Polonius kumartaen ja
katsellen timanttia. "Se on tosiaan ihmeellinen kapine", sanoi hän,
"vaikka timantti on todellakin soma pieni kappale. Katsokaahan sitä,
mylady. Se on iiriläistä tekoa, leimattu v:lta 95 ja saattaa kenties
muistuttaa Teidän Armonne varhaisimman nuoruuden aikoja."
"Olkaa höpisemättä, herra Polonius!" sanoi vanha nainen, pieni
kaitakasvoinen vaimo, jonka kasvot olivat tuhansissa rypyissä.
"Kuinka Te rohkenette, herra hyvä, puhua sellaista hölynpölyä minun
kaltaiselleni vanhalle vaimolle. Enkö minä ollut viisikymmenvuotias
vuonna 95 ja iso-äiti vuonna 96?" Hän pisti esiin pari kuihtunutta,
vapisevaa kättä, avasi kannen, tarkasti sitä hetkisen ja sitten
purskahti nauramaan: "Niin totta kuin elän, onhan se iso Hoggartyn
timantti!"
Taivasten tekijät! mikä talismani olikaan joutunut käsiini?
"Katsokaa, tytöt", jatkoi vanha nainen, "tämä on koko Irlannin
isoin koriste. Tämä punanaamainen mies tässä keskellä on polonen
Mick Hoggarty, eräs orpanani, joka oli rakastunut minuun vuonna 84,
kun minä juuri olin menettänyt rakkaan isoisä-parkanne. Nämät
kolmetoista punaista hiuksenheiskaletta edustavat hänen
kolmeatoista kuuluisaa sisartaan — Biddy, Minny, Theddy, Widdy
(lyhennys Williaminasta), Freddy, Izzy, Tizzy, Mysie, Grizzy, Polly,
Dolly, Neil ja Bell — kaikki naimisissa, kaikki julmia ja kaikki
punatukkaisia. Ja kenen heistä Te olette poika, nuori mies? — vaikka
oikeus vaatii myöntämään, ettette ole perheen muotoon."
Kaksi kaunista nuorta naista käänsi minuun kaksi kaunista mustaa
silmäparia ja odotti vastausta, jonka he olisivat saaneetkin, ellei
vanha vaimo olisi ruvennut latelemaan satoja juttuja yllämainituista
kolmestatoista naisesta ja kaikista heidän rakastajistaan, kaikista
heidän vastoinkäymisistään ja kaikista Mick Hoggartyn
kaksintaisteluista. Hän oli viidenkymmenen vuoden roskajutut tietävä
kronika. Vihdoin hänet keskeytti ankara yskäkohtaus, jonka loputtua
herra Polonius erinomaisen kohteliaasti kysyi minulta, mihin hän saisi
lähettää neulan ja tahdoinko pitää hiukset.
"En", sanoin minä, "en välitä hiuksista."
"Entä neula, hyvä herra?"
Minua oli hävettänyt osotteeni ilmoittaminen. "Mutta kissa
vieköön!" ajattelin minä, "miksi minä? —"
Saa kuninkaalta aatelin ja arvon kreivi, herttua, on miehen
kunto kuitenkin jaella vaikea.
Mitä syytä minun olisi salata näiltä naisilta, missä asun?
"Olkaa hyvä ja lähettäkää kapine, saatuanne sen valmiiksi, herra
Titmarshille, n:o 3 Bell-kuja, Salisburyn kortteli, lähellä St.
Briden kirkkoa, Fleet-katu. Pyydän, soittakaa toisen kerroksen
kelloa."
"Hyvä herra, kuinka?" sanoi herra Polonius.
"Kuinka!" huusi vanha vaimo. "Herra Kuinka? Mais, ma chère, c'est
impayable.[10] Tulkaa pois — tääll' on vaunut! Antakaa
käsivartenne, herra Kuinka, nouskaa sisään ja kertokaa minulle
kaikki kolmestatoista tädistänne."
Hän tarttui minua käsipuolesta ja hynttäsi puodista niin kerkeään
kuin mahdollista, nuorten naisten nauraen seuratessa perästä.
"No, hypätkää sisään, kuuletteko?" sanoi hän pistäen terävän
nokkansa ulos vaunun akkunasta.
"En voi, mylady", sanon minä, "minulla on täällä ystävä."
"Vielä vai! mäkeen koko ystävänne ja hypätkää sisään!" Ja ennen
kun kerkesin kunnolleen saada sanaa suustani, työnsi muuan iso
puuteroitu roikale, keltaiset samettiset polvihousut jalassa, minut
vaunujen portaita ylös ja paiskasi oven kiinni perässäni.
Juuri vaunujen vieriessä pois ennätin silmätä Hoskinsiin, enkä
koskaan unohda hänen muotoansa. Siinä seisoi Gus, suu ammollaan,
silmät pyöreinä muljottaen, savuava sikaari kädessään, ihmetellen
minkä jaksoi minulle juuri sattunutta merkillistä seikkailua.
"Kuka on tämä Titmarsh?" sanoo Gus. "Vaunuihin oli aatelinen
kruunu maalattu, niin hitto soi olikin!"
KOLMAS LUKU
KUINKA TIMANTIN OMISTAJA VIEDÄÄN POIS UPEISSA VAUNUISSA JA
HYVÄ ONNI HÄNTÄ VIELÄ EDELLEEN SEURAA.
Minä istuin vaunujen takaistuimella vierelläni sangen sievä nuori
nainen, rakkaan Maryni iässä — nimittäin seitsemäntoista vuotta ja
yhdeksän kuukautta; ja meitä vastapäätä istui vanha kreivitär ja
hänen toinen pojantyttärensä — kaunis hänkin, vaikka kymmentä
vuotta vanhempi. Muistan, että minulla tuona päivänä oli ylläni
kiiltonappinen sininen takkini ja nankinihousut, valkea koruliivi ja
päässä Dandon silkkihattu, joka juuri oli tullut muotiin vuonna 22 ja
näytti melkoista loistavammalta kuin paras majavanhattu.
"Ja kuka oli se kamala olento" — alotti hänen armonsa jälleen —
"se kauhean raakamainen, suurikitainen tomppeli korkorautaisine
kenkineen ja jäljiteltyine kultavitjoineen, joka töllisteli meitä
noustessamme vaunuihin?"
Kuinka hän oli saattanut huomata, että Gusin vitjat olivat jäljitellyt,
sitä en voi sanoa, mutta niin ne olivat, ja me olimme ostaneet ne
viidelläkolmatta shillingillä ja kuudella pennyllä vain viikko takaperin
MacPhailin kaupasta St. Paulin kirkkotorin varrelta. Mutta minä en
pitänyt siitä, että ystävääni soimattiin ja siksi puhuin hänen
puolestaan:
"Rouva hyvä", sanon minä, "se nuori gentlemanni on nimeltään
Augustus Hoskins. Me asumme yhdessä eikä löydy parempaa eikä
hyväsydämisempää poikaa."
"Te teette aivan oikein puolustaessanne ystäviänne, hyvä herra",
sanoi toinen naisista, jonka nimi näkyi olevan lady Jane.
"Niin totta vie tekeekin, lady Jane, ja minä pidän uljuudesta
nuoressa miehessä. Vai on hänen nimensä Hoskins? Minä tunnen,
ystäväiseni, kaikki Englannin Hoskinsit. Niitä on Lincolnshiren
Hoskinsit, Shropshiren Hoskinsit — sanotaan, että amiraalin tytär,
Bell, oli rakastunut mustaan palvelijaan tai laivamieheen tai johonkin
semmoiseen, mutta maailmahan on niin panettelevainen. Niitä on
myöskin tohtori Hoskins Bathista, joka hoiti rakasta Drum-parkaa
hänen sairastaessaan kurkkumätää. Ja rakas vanha Fred Hoskins-
raukka, luuvaloinen kenraali. Minä muistan, kuinka hän oli hoikka
kuin hämähäkki vuonna 84 ja elävä kuin ammatti-ilveilijä ja
rakastunut minuun — oo, kuinka hän oli rakastunut minuun!"
"Sinulla näyttää olleen kokonainen lauma ihailijoita noihin aikoihin,
isoäiti?" sanoi lady Jane.
"Satoja, rakkahani — satoja tuhansia! Minä olin koko Bathin
suosikki ja suuri kaunotar myöskin. Olisitteko koskaan tullut sitä
ajatelleeksi nyt, vastatkaa omantunnonmukaisesti ja imartelematta,
herra… kuinka se nimenne kuuluikaan?"
"Tosiaankaan, hyvä rouva, en koskaan", vastasin minä, sillä vanha
vaimo oli niin ruma kuin olla saattaa. Ja sen sanoessani molemmat
nuoret naiset kirkuen nauramaan, ja minä näin, mitenkä suurine
poskipartoineen ylvästelevät lakeijat virnottelivat vaunujen perässä.
"Toden totta, Te olette sangen suorapuheinen, herra… mikä
olikaan nimenne — sangen suorapuheinen todellakin, mutta minä
pidän suorapuheisista nuorista miehistä. Mutta kaunotar minä olin.
Kysykääpä ystävänne sedältä, kenraalilta. Hän kuuluu Lincolnshiren
Hoskinsien haaraan. Minä näin, että hänellä oli suuressa määrin
perheen sukupiirteet. Onko hän vanhin poika? Se on sievä tila,
vaikka pahasti velkaantunut, sillä vanha Sir George oli aika pahuus
mieheksi — Hanburyn Williamsin ja Lyttletonin ja noiden muiden
kauheitten, ilkeitten, hirveitten ihmisten ystäviä! Kuinka paljon
luulette, herraseni, hänen saavan nyt, kun amiraali kuolee?"
"Kas sitä en osaa sanoa, mutta amiraali ei ole ystäväni isä."
"Eikö hänen ystävänsä — mutta onpahan, sanon minä, enkä minä
ole koskaan väärässä. Kuka hänen isänsä sitten on?"
"Mylady, Gusin isä on nahkakauppias Skinnerkadulta Snow Hillistä,
hyvin arvossa pidetty kauppahuone, mylady. Mutta Gus on vain
kolmas poika eikä siksi saata odottaa suurta osuutta omaisuudesta."
Molemmat nuoret naiset hymyilivät tälle selitykselle — vanha
vaimo sanoi: "Kuinka?"
"Minä pidän siitä, hyvä herra", sanoi lady Jane, "että Te ette häpeä
ystäviänne, minkälainen heidän asemansa elämässä lieneekin. Onko
meidän sallittu päästää Teidät alas jossakin, herra Titmarsh?"
"Ei mitään hätää, mylady", sanon minä. "Meillä on tänään vapaata
konttorista — ainakin antoi Roundhand lupaa minulle ja Gusille, ja
minun on erittäin mieluista ajella vähäsen puistossa, ellei se ole
vaivaksi."
"Epäilemättä se on meille — äärettömän hauskaa", vastasi lady
Jane, vaikka pikemmin vakavan muotoisena.
"Oi, aivan varmasti!" vahvistaa lady Fanny paukuttaen käsiään.
"Eikö totta, isoäiti? Ja sen jälkeen kun me olemme olleet puistossa,
me saatamme ajella Kensingtonin puutarhassa, jos herra Titmarsh
ystävällisesti tahtoo olla seuranamme."
"Mutta, Fanny, emme tee sillä tavoin", sanoo lady Jane.
"Mutta me teemme kumminkin!" huusi lady Drum. "Olenhan vallan
menehtyä halusta kuulla jotakin hänen enostaan ja kolmestatoista
tädistään, ja te nuoret tytöt pärisette vielä siinä niin, etten tässä saa
siunattua sanaa vaihtaa nuoren ystäväni kanssa."
Lady Jane kohautti olkiaan eikä virkennyt enään sanaakaan. Lady
Fanny, joka oli iloinen kuin kissanpoikanen (jos minun sallitaan sanoa
sillä tavoin ylimystöstä), nauroi ja hihitti ja taas punastui, ja näytti
olevan kovasti huvitettu sisarensa huonosta tuulesta. Ja kreivitär kävi
heti käsiksi Hoggartyn kolmentoista missin historiaan, joka ei ollut
läheskään lopussa, kun me saavuimme puistoon.
Ette voi ajatellakaan, mitkä sadat herrat siellä selkähevosella
ajoivat vaunujen tykö ja puhuttelivat naisia. Heillä oli kaikilla
leikkisana lady Drumille, jolla näkyi olevan omalaatuinen luonne,
kumarrus lady Janelle ja, varsinkin nuorilla miehillä, kohteliaisuus
lady Fannylle.
Vaikka lady Fanny kumarteli ja punastui, kuten nuoren naisen
tulee, näytti hän kuitenkin ajattelevan jotakin muuta, sillä hän
ojenteli päätään ulos vaunuista innolla pälyen ratsastavien joukkoon,
ikäänkuin toivoen näkevänsä jonkun. Ahaa, hyvä lady Fanny, minä
kyllä tiesin, mitä merkitsi, että teidän kaltaisenne nuori nainen oli
hajamielinen ja vaaniskeli ja vain puolittain vastaili hänelle tehtyihin
kysymyksiin. Ei huolta Sam Titmarshista, hän kyllä tietää yhtä hyvin
kuin kuka muu hyvänsä, mitä eräs henkilö merkitsee, sen takaan.
Kun minä näin näiden temppujen jatkuvan, en malttanut olla
vihjaisematta lady Janelle osottaakseni, että tiesin mistä päin tuuli
kävi.
"Minä arvaan, että nuori neiti etsiskelee 'erästä henkilöä'", sanon
minä.
Silloin oli hänen vuoronsa näyttää totiselta, sen vakuutan, ja hän
karahti punaseksi kuin kukko, mutta hetkisen päästä se
hyvänluontoinen typykkä katsoi sisareensa ja molemmat nuoret
naiset nostivat nenäliinat silmilleen ja alkoivat nauraa — nauraa
ikäänkuin minä olisin sanonut kaikkein hullunkurisinta maailmassa.
"IL est charmant, votre monsieur",[11] sanoi lady Jane
isoäidilleen. Johon minä kumarsin ja vastasin: "Madame, vous me
faites beaucoup d'honneur",[12] sillä minä osaan ranskankieltä ja
olin hyvilläni, että nämät hyvät naiset olivat suopuneet minuun.
"Minä olen vähäpätöinen poika parka, rouva hyvä, enkä ole tottunut
Lontoon hienoon elämään, ja minusta todella te olette hyvin
ystävällisiä sillä tavoin ottaessanne minut suojaanne ja antaessanne
minun ajella hienoissa vaunuissanne."
Tällä hetkellä kalpeakasvoinen, viiksihuulinen herra mustan
hevosen selässä tuli ratsastaen vaunujen luo, ja siitä, että lady Fanny
hieman hytkähti ja samassa kääntyi katsomaan muuanne, minä
älysin, että eräs henkilö vihdoinkin oli tullut.
"Nöyrin palvelijanne, lady Drum", tervehti hän. "Olen juuri
ratsastanut miehen kanssa, joka oli vähillä ampua itsensä
rakkaudesta kauniiseen kreivitär Drumiin vuonna — no samapa tuo."
"Oliko se Killblazes?" tiedusti vanha rouva. "Hän on armas vanha
äijä, ja minä olen aivan valmis karkaamaan hänen kanssansa tällä
samalla hetkellä. Vai oliko se ihastuttava vanha piispa? Hänellä on
kihara hiuksistani — hän sai sen ollessaan isän kappalaisena; ja
saatanpa sanoa Teille, olisi aika työ löytää toinen semmoinen nyt
samalta paikalta."
"Elkää nyt, mylady!" sanon minä, — elkää sanoko niin!"
"Mutta teenpä sen sittenkin, herraseni", sanoo hän, "sillä näin
meidän kesken, on minun pääni yhtä paljas kuin tykin kuula —
kysykää Fannylta, eikö ole. Mitenkä se lapsirukka säikähtyi kerta
pienenä odottamatta tullessaan pukuhuoneeseeni, kun minulla ei
ollut tekotukkaa päässä!"
"Minä toivon, että lady Fanny on tointunut siitä pelästyksestä",
sanoi "eräs" katsoen ensin häntä ja sitten minua sen näköisenä kuin
olisi tahtonut syödä minut. Ja uskoisitteko sen? Lady Fanny ei
osannut muuta vastata kuin "kiitos, varsin hyvin, mylord", ja sen hän
sanoi niin hämillään ja punastuvana kuin meidän oli tapana koulussa
lausua Virgiliusta — kun emme sitä osanneet.
Mylord yhä katseli minua ylen tuikeasti ja mutisi jotakin
toivoneensa saavansa sijan lady Drumin vaunuissa, kun oli väsynyt
ratsastukseen, mihin lady Fanny hänkin mutisi jotakin "isoäidin
ystävästä".
"Sinun ystäväsihän, Fanny, pitäisi sinun sanoa", sanoo lady Jane.
"Me emme varmaankaan koskaan olisi tulleet puistoon, ellei Fanny
ehdottomasti olisi tahtonut tuoda herra Titmarshia tänne. Sallikaa
minun esittää kreivi Tiptoff — herra Titmarsh." Mutta sen sijaan että
olisi nostanut hattua, niinkuin minä tein, hänen armonsa murahti
toivovansa toista tilaisuutta ja nelisti taas pois mustan hevosensa
selässä. Miten pirhanassa minä olisin häntä loukannut, en ollenkaan
osaa ymmärtää.
Mutta näyttipä siltä, että minä olin määrätty sinä päivänä
loukkaamaan kaikkia herrasmiehiä, sillä eikös nyt tullut paikalle
hänen kunnianarvoisuutensa Edmund Preston, Hänen Majesteettinsa
valtiosihteerejä (minkä aivan hyvin tiesin konttorimme kalenterista)
ja lady Janen herra mies.
Hänen kunnianarvoisuutensa ratsasti pientä vankkaa kimoa ja oli
lihava, kalvakka mies, joka näytti siltä kuin ei hän koskaan liikkuisi
raittiissa ilmassa.
"Kuka perhana tuo on?" tokasi hän vaimolleen äreästi katsellen
minua ja häntä.
"Oh, hän on isoäidin ja Janen ystäviä", ehätti lady Fanny
sanomaan samalla silmäten, kuin mikäkin viekas vekkuli kun hän oli,
perin veitikkamaisesti sisareensa, joka puolestaan näytti hirveän
säikähtyneeltä ja pyytelevästi katsoi sisareensa eikä uskaltanut
ääntää sanaakaan. "Niin, todella", jatkoi lady Fanny, "herra Titmarsh
on isoäidin serkku, äidin puolelta, Hoggartyn kautta. Etkö tullut
tuntemaan Hoggarteja, Edmund, ollessasi lordi Bagwigin kanssa
Irlannissa? Salli minun esittää sinulle isoäidin serkku, herra Titmarsh;
herra Titmarsh, lankoni, herra Edmund Preston."
Koko ajan koetti lady Jane polkea sisartansa jalalle niin kovaan
kuin taisi, mutta se pieni ilkimys ei ottanut sitä miksikään, ja minä,
joka en ollut koskaan kuullut tästä orpanuudesta, olin niin hämilläni
kuin olla saattaa. Mutta minä en tuntenut kreivitär Drumia läheskään
niin hyvin kuin hänen pojantyttärensä, se hurja tyttö. Sillä vanha
vaimo, joka juuri oli kutsunut serkukseen Gus Hoskins parkaa, näytti
kuvittelevan koko maailman olevan sukulaisuussuhteissa hänen
kanssansa, ja sanoi:
"Niin, me olemme sukua, emmekä kovin etäistäkään. Mick
Hoggartyn isoäiti oli Millicent Brady, ja hän ja täti Towzer olivat
sukua, kuten koko maailma tietää, sillä Decimus Brady Ballybradystä
nai täti Towzerin äidin oikean serkun, Bell Swiftin — hän ei ollut
sukua tuomioprovastille, rakkaani, jonka perheen laita oli niin ja
näin.[13] No, eikö se ole selvä?"
"Oi, täydellisesti, isoäiti", myönsi lady Jane nauraen, mutta
kunnianarvoisa herra, joka vielä ratsasti vierellämme, näytti perin
äreältä ja happamalta.
"Varmaanhan sinä tulit tuntemaan Hoggartyt, Edmund? — ne
kolmetoista punatukkaista tyttöä — yhdeksän sulotarta ja neljä
päällisiksi, kuten Clanboy paran oli tapana kutsua heitä. Clan parka!
Teidän ja minun serkkuni, herra Titmarsh, ja hirveästi rakastunut
minuun hänkin. Etkö nyt muista niitä kaikkia, Edmund? — etkö
muista? — et muista Biddyä ja Minnyä, ja Theddyä ja Widdyä, ja
Mysiä ja Grizzyä, ja Pollya ja Dollyä ja niitä muita?"
"Hiiteen kaikki Hoggartyn missit!" sanoi kunnianarvoisa herra, ja
sanoi sen niin pontevasti, että hänen harmaa kimonsa äkkiä potkasi
takajaloillaan, jolloin herra oli vähällä lentää päistikkaa maahan.
Lady Jane kirkasi, lady Fanny nauroi, vanha lady Drum ei näyttänyt
olevan millänsäkään ja sanoi: "Sen olette ansainnutkin siinä
kiroillessanne, te ilkeä mies!"
"Eikö Teidän olisi parempi tulla vaunuihin, Edmund — herra
Preston?" lausui hänen vaimonsa tuskaisena.
"Minä kyllä nousen heti pois, rouva hyvä", sanon minä.
"Mitä joutavia, pysykää paikallanne!" käski lady Drum, "vaunut
ovat minun. Ja jos herra Preston näkee hyväksi kiroilla minun
ikäiselleni naiselle tuohon inhottavaan moukkamaiseen tapaan —
inhottavaan moukkamaiseen tapaan, sanon vieläkin kerran —, en voi
käsittää, mistä hyvästä minun ystäväni näkisivät vaivaa hänen
vuoksensa. Antaa hänen istua ajajan kanssa, jos hän haluaa, tai tulla
istumaan meidän kahden keskelle." Ilmeistä oli, että lady Drum
vihasi sydämensä pohjasta poikansa vävyä, ja minä olen huomannut,
ettei tämäntapainen viha ole hienoissa perheissä mitenkään
harvinainen.
Herra Preston, Hänen Majesteettinsa valtiosihteerejä, oli totta
puhuaksemme kovasti peloissaan hevosensa selässä ja siksi suuresti
iloissaan päästessään pois hyppivältä ja potkivalta elukalta. Hänen
kalvakat kasvonsa näyttivät vielä kalpeammilta kuin ennen ja hänen
kätensä ja jalkansa vapisivat, kun hän kapusi alas kimon selästä ja
antoi ohjakset palvelijalleen. Minusta mies — tarkotan isäntää —
tuntui vastenmieliseltä heti ensi hetkestä, kun hän tuli luoksemme ja
puhutteli niin raa'alla tavalla lempeätä, suloista vaimoansa, ja
mielestäni hän oli kurja pelkuri, niinkuin seikkailu kimon selässä
osottikin hänen olevan. Sillähän olisi, lempo soi, lapsikin ratsastanut,
ja tuossa iso mies haihatteli sydän kurkussa jo ensi potkauksesta.
"Oo, joutukaa, tulkaa toki sisään, Edmund", sanoi lady Fanny
nauraen, ja vaunujen astuimet laskettiin alas ja heittäen minuun
tuikean silmäyksen hän astui sisään aikoen asettua lady Fannyn
kolkkaan (minäpä en mielinyt hievahtaa omastani, sen takaan), kun
tuo pieni hulivili huudahti: "Oi ei, ei millään muotoa, herra Preston!
Sulkekaa ovi, Thomas. Voi, kuinka hauskaa näyttää koko maailmalle
kuinka valtiosihteeri istuu penkillä kolmantena!"
Ja koko murjottavalta se valtiosihteeri näyttikin, sen voin
vakuuttaa!
"Ottakaa minun paikkani, Edmund, elkääkä välittäkö Fannyn
hullutuksista", pyysi lady Jane arasti.
"Oh, ei, pyydän, rouva hyvä, istukaa pois. Minun on tässä varsin
mukava, varsin mukava, ja niin toivon, että herra — tämän herrankin
on."
"Täydellisesti, sen vakuutan", sanon minä. "Minä olin aikeissa
tarjoutua ratsastamaan hevosenne kotiin Teidän puolestanne, koska
Te näytitte sitä kovasti pelkäävän, mutta seikka oli se, että minun oli
tässä niin mukava, että todellakaan en voinut irtautua paikaltani."
Kuinka virnistelikään vanha lady Drum, kun minä puhuin näin!
Kuinka hänen pienet silmänsä vilkuttivat ja hänen pieni viekas
suunsa liehehti! Minä en voinut olla puhumatta, nähkääs, sillä sisuni
kiehui.
"Teidän seuranne on aina meille iloksi, serkku Titmarsh", sanoo
hän ojentaen minulle kultaista nuuskarasiaa, josta minä otin
hyppysellisen ja aivastin ylväästi kuin lordi.
"Koska olette kutsunut tämän herrasmiehen vaunuihinne, lady
Jane Preston, niin totta kai kutsutte hänet kotiin päivällisellekin,"
sanoo herra Preston, sinisenä kiukusta.
"Minä kutsuin hänet minun vaunuihini", oikasee vanha lady, "ja
koska olemme menossa päivälliselle Teidän luoksenne ja Te niin
hartaasti haluatte, niin on minun erittäin mieluista nähdä hänet
siellä."
"Valitan, että olen lupautunut toisaalle", sanoin minä.
"Oh, tosiaan, mikä vahinko!" sanoo kunnianarvoisa herra Edmund,
yhä äkäisenä tuijottaen vaimoonsa. "Mikä vahinko, että tämä
herrasmies — en muista nimeä — että Teidän ystävänne, lady Jane,
on lupautunut toisaalle! Teidän olisi varmaankin ollut erinomaisen
mieluista nähdä sukulaisenne Whitehallissa."
Lady Drum oli ilmeisesti hassastunut sukulaisuuksien keksimiseen,
mutta tämä hänen kunnianarvoisuutensa puhe oli sentään liika
paljon.
"Kuules Sam", sanon minä itselleni, "oles mies ja näytä kuntoasi!"
Ja niin minä heti puutuin puheeseen ja sanoin: "No koska herra
valtiosihteeristä se on niin kovasti tärkeätä, hyvät naiset, niin minä
peruutan toisaalle antamani lupauksen, ja todellisella mielihyvällä
haukkaan palasen hänen kanssaan. Mikä on Teidän ruokailuaikanne,
sir?"
Welcome to our website – the perfect destination for book lovers and
knowledge seekers. We believe that every book holds a new world,
offering opportunities for learning, discovery, and personal growth.
That’s why we are dedicated to bringing you a diverse collection of
books, ranging from classic literature and specialized publications to
self-development guides and children's books.
More than just a book-buying platform, we strive to be a bridge
connecting you with timeless cultural and intellectual values. With an
elegant, user-friendly interface and a smart search system, you can
quickly find the books that best suit your interests. Additionally,
our special promotions and home delivery services help you save time
and fully enjoy the joy of reading.
Join us on a journey of knowledge exploration, passion nurturing, and
personal growth every day!
ebookbell.com

More Related Content

PDF
Spring Start Here Learn what you need and learn it well 1st Edition Laurentiu...
PDF
Microservice Apis Using Python Flask Fastapi Openapi And More 1st Edition Jos...
PDF
iOS 5 Programming Cookbook Solutions Examples for iPhone iPad and iPod touch ...
PDF
Azure Storage Streaming And Batch Analytics A Guide For Data Engineers 1st Ed...
PDF
ASP.NET Core Razor Pages in Action 1st Edition Mike Brind
PDF
iOS 14 Programming Fundamentals with Swift Covers iOS 14 Xcode 12 and Swift 5...
PDF
New Perspectives on HTML5 CSS3 JavaScript 6th Edition Carey Solutions Manual
PDF
WPF in Action with Visual Studio 2008 1st Edition Arlen Feldman
Spring Start Here Learn what you need and learn it well 1st Edition Laurentiu...
Microservice Apis Using Python Flask Fastapi Openapi And More 1st Edition Jos...
iOS 5 Programming Cookbook Solutions Examples for iPhone iPad and iPod touch ...
Azure Storage Streaming And Batch Analytics A Guide For Data Engineers 1st Ed...
ASP.NET Core Razor Pages in Action 1st Edition Mike Brind
iOS 14 Programming Fundamentals with Swift Covers iOS 14 Xcode 12 and Swift 5...
New Perspectives on HTML5 CSS3 JavaScript 6th Edition Carey Solutions Manual
WPF in Action with Visual Studio 2008 1st Edition Arlen Feldman

Similar to Aurelia In Action 1 Converted Sean Hunter (20)

PDF
Component Development For The Java Platform 1st Edition Stuart Dabbs Halloway
PDF
Get Angular 2 Cookbook Frisbie free all chapters
PDF
Learn Grafana 10x Second Edition 2 Converted Eric Salituro
PDF
Postgresql Up Running A Practical Guide To The Advanced Open Source Database ...
PDF
Designing Evolvable Web APIs with ASP NET 1st Edition Glenn Block
PDF
Multitasking With Raspberry Pi Teamira Dogan Ibrahim
PDF
Dama Dmbok2 Data Management Knowledge System Guide 2nd Edition Dama Internati...
PDF
A Practical Guide to Content Delivery Networks Second Edition Gilbert Held
PDF
Postgresql 9 Admin Cookbook Riggs Simon Krosing Hannu
PDF
Drupal 6 Javascript And Jquery 1st Edition Matt Butcher
PDF
Embedded Networking with CAN and CANopen Pfeiffer
PDF
Kubernetes Operators 1st Edition Jason Dobies
PDF
Trino The Definitive Guide Sql At Any Scale On Any Storage In Any Environment...
PDF
Download full ebook of Become a ninja with Angular Ninja Squad instant downlo...
PDF
Download ebooks file Mastering D3 js 1st Edition Pablo Navarro Castillo [Cast...
PDF
DevOps with OpenShift 1st Edition Mike Hepburn
PDF
Building Microservices With Net Core Converted Soumya Mukherjee
PDF
Cisco IOS Cookbook 2nd Edition Cookbooks O Reilly Kevin Dooley
PDF
C50 In A Nutshell 5 Wow Joseph Albahari Ben Albahari
PDF
Kubernetes Operators 1st Edition Jason Dobies
Component Development For The Java Platform 1st Edition Stuart Dabbs Halloway
Get Angular 2 Cookbook Frisbie free all chapters
Learn Grafana 10x Second Edition 2 Converted Eric Salituro
Postgresql Up Running A Practical Guide To The Advanced Open Source Database ...
Designing Evolvable Web APIs with ASP NET 1st Edition Glenn Block
Multitasking With Raspberry Pi Teamira Dogan Ibrahim
Dama Dmbok2 Data Management Knowledge System Guide 2nd Edition Dama Internati...
A Practical Guide to Content Delivery Networks Second Edition Gilbert Held
Postgresql 9 Admin Cookbook Riggs Simon Krosing Hannu
Drupal 6 Javascript And Jquery 1st Edition Matt Butcher
Embedded Networking with CAN and CANopen Pfeiffer
Kubernetes Operators 1st Edition Jason Dobies
Trino The Definitive Guide Sql At Any Scale On Any Storage In Any Environment...
Download full ebook of Become a ninja with Angular Ninja Squad instant downlo...
Download ebooks file Mastering D3 js 1st Edition Pablo Navarro Castillo [Cast...
DevOps with OpenShift 1st Edition Mike Hepburn
Building Microservices With Net Core Converted Soumya Mukherjee
Cisco IOS Cookbook 2nd Edition Cookbooks O Reilly Kevin Dooley
C50 In A Nutshell 5 Wow Joseph Albahari Ben Albahari
Kubernetes Operators 1st Edition Jason Dobies
Ad

Aurelia In Action 1 Converted Sean Hunter

  • 1. Aurelia In Action 1 Converted Sean Hunter download https://ebookbell.com/product/aurelia-in-action-1-converted-sean- hunter-46158502 Explore and download more ebooks at ebookbell.com
  • 2. Here are some recommended products that we believe you will be interested in. You can click the link to download. Jquery In Action Third Edition 3rd Edition Bear Bibeault Yehuda Katz https://ebookbell.com/product/jquery-in-action-third-edition-3rd- edition-bear-bibeault-yehuda-katz-5217606 Jquery In Action 3rd Edition 3rd Edition Bear Bibeault Yehuda Katz https://ebookbell.com/product/jquery-in-action-3rd-edition-3rd- edition-bear-bibeault-yehuda-katz-55870124 Statues In Context Aurlia Massonberghoff https://ebookbell.com/product/statues-in-context-aurlia- massonberghoff-50729660 Moon Living Abroad In France Aurelia Dandrea https://ebookbell.com/product/moon-living-abroad-in-france-aurelia- dandrea-49002930
  • 3. Messages For The Enlightenment Of A Humanity In Transformation Aurelia Louise Jones https://ebookbell.com/product/messages-for-the-enlightenment-of-a- humanity-in-transformation-aurelia-louise-jones-5063492 Vegetarian Paris The Complete Insiders Guide To Th Best Veggie Food In Paris Aurelia Dandrea https://ebookbell.com/product/vegetarian-paris-the-complete-insiders- guide-to-th-best-veggie-food-in-paris-aurelia-dandrea-48902282 Immersive Technology In Smart Cities Augmented And Virtual Reality In Iot 1st Ed 2022 Sagaya Aurelia Editor https://ebookbell.com/product/immersive-technology-in-smart-cities- augmented-and-virtual-reality-in-iot-1st-ed-2022-sagaya-aurelia- editor-33362774 What The Emperor Built Architecture And Empire In The Early Ming Aurelia Campbell https://ebookbell.com/product/what-the-emperor-built-architecture-and- empire-in-the-early-ming-aurelia-campbell-23849686 Security Agents Alien Bartender Olympus Station 3 In The Stars Romance Aurelia Skye Kit Tunstall https://ebookbell.com/product/security-agents-alien-bartender-olympus- station-3-in-the-stars-romance-aurelia-skye-kit-tunstall-51165272
  • 9. Copyright For online information and ordering of this and other Manning books, please visit www.manning.com. The publisher offers discounts on this book when ordered in quantity. For more information, please contact Special Sales Department Manning Publications Co. 20 Baldwin Road PO Box 761 Shelter Island, NY 11964 Email: orders@manning.com ©2018 by Manning Publications Co. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by means electronic, mechanical, photocopying, or otherwise, without prior written permission of the publisher. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in the
  • 10. book, and Manning Publications was aware of a trademark claim, the designations have been printed in initial caps or all caps. Recognizing the importance of preserving what has been written, it is Manning’s policy to have the books we publish printed on acid-free paper, and we exert our best efforts to that end. Recognizing also our responsibility to conserve the resources of our planet, Manning books are printed on paper that is at least 15 percent recycled and processed without the use of elemental chlorine. Manning Publications Co. 20 Baldwin Road PO Box 761 Shelter Island, NY 11964
  • 11. Development editor: Toni Arritola Technical development editor: Andrew Siemer Review editor: Ivan Martinović Project manager: Tiffany Taylor Copy editor: Safis Editing Proofreader: Katie Tennant Technical proofreader: Troi Eisler Typesetter: Dennis Dalinnik Cover designer: Marija Tudor ISBN: 9781617294785 Printed in the United States of America 1 2 3 4 5 6 7 8 9 10 – DP – 23 22 21 20 19 18
  • 12. Dedication To the welcoming and always enthusiastic Aurelia community
  • 13. Brief Table of Contents Copyright Brief Table of Contents Table of Contents Preface Acknowledgments About this book About the author About the cover illustration 1. Introduction to Aurelia
  • 14. Chapter 1. Introducing Aurelia Chapter 2. Building your first Aurelia application 2. Exploring Aurelia Chapter 3. View resources, custom elements, and custom attributes Chapter 4. Aurelia templating and data binding Chapter 5. Value converters and binding behaviors Chapter 6. Intercomponent communication Chapter 7. Working with forms Chapter 8. Working with HTTP Chapter 9. Routing
  • 15. Chapter 10. Authentication Chapter 11. Dynamic composition Chapter 12. Web Components and Aurelia Chapter 13. Extending Aurelia Chapter 14. Animation 3. Aurelia in the real world Chapter 15. Testing Chapter 16. Deploying Aurelia applications Appendix. Installation and setup Aurelia glossary Aurelia CLI cheat sheet
  • 16. Index List of Figures List of Tables List of Listings
  • 17. Table of Contents Copyright Brief Table of Contents Table of Contents Preface Acknowledgments About this book About the author About the cover illustration 1. Introduction to Aurelia
  • 18. Chapter 1. Introducing Aurelia 1.1. Why should you care? 1.1.1. How complicated are the applications you’re building? 1.1.2. How important is web-standards compliance to the team? 1.1.3. What past development experience does the team have? 1.1.4. How is the team organized? 1.1.5. What kind of commercial and community support do you need? 1.2. What kind of projects make Aurelia shine? 1.2.1. Server-side application with a sprinkling of JavaScript 1.2.2. SPA rendered on the client side
  • 19. 1.2.3. The hybrid approach: server side with SPA islands 1.2.4. Server-side-rendered SPA 1.2.5. Where does Aurelia sit? 1.2.6. What makes Aurelia different? 1.3. A tour of Aurelia 1.3.1. Binding 1.3.2. Handling DOM events 1.3.3. Routing 1.3.4. Inside the view-model, and what’s this about components? 1.3.5. The Aurelia component lifecycle 1.3.6. Loading data from an API
  • 20. 1.3.7. Dependency injection with Aurelia 1.3.8. Rendering the view Summary Chapter 2. Building your first Aurelia application 2.1. Introducing my-books 2.2. Building with Aurelia 2.2.1. Option 1: Download the quick start 2.2.2. Option 2: Skeleton application 2.2.3. Option 3: Aurelia CLI 2.2.4. Creating the my-books project
  • 21. 2.3. One-way and two-way data binding and event delegation 2.3.1. Adding the functionality inline 2.4. Creating components using Aurelia custom elements 2.5. Building services and retrieving data from a REST API Troubleshooting steps 2.6. Maintaining page state with the Aurelia router 2.6.1. Configuring the router 2.7. Moving forward 2.8. my-books project status Summary 2. Exploring Aurelia
  • 22. Chapter 3. View resources, custom elements, and custom attributes 3.1. Understanding Aurelia’s templating primitives 3.1.1. Aurelia’s templating primitives 3.2. CSS resources 3.2.1. Setting up the project dependencies 3.2.2. Adding the CSS resources 3.2.3. Styling the my-books views 3.3. Custom elements 3.3.1. Custom elements 3.3.2. my-books custom elements
  • 23. 3.3.3. HTML-only custom elements 3.4. Custom attributes 3.4.1. Creating a tooltip custom attribute 3.4.2. Single-value binding 3.4.3. Options binding 3.5. my-books project status Summary Chapter 4. Aurelia templating and data binding 4.1. Template conditionals 4.2. Repeaters 4.2.1. Aurelia repeater contextual properties
  • 24. 4.3. Data binding with Aurelia 4.3.1. The three key ingredients of Aurelia’s binding expressions 4.4. Binding commands 4.4.1. One-way bindings 4.4.2. String-interpolation binding 4.4.3. Two-way bindings 4.4.4. One-time binding command 4.5. Handling DOM events 4.5.1. Trigger 4.5.2. Delegate
  • 25. 4.6. my-books project status Summary Chapter 5. Value converters and binding behaviors 5.1. Creating a value converter 5.2. Applying value converters to lists 5.2.1. Value-converter composition 5.3. Binding behaviors 5.3.1. Throttle and debounce binding behaviors 5.3.2. updateTrigger binding behavior 5.3.3. signal binding behavior 5.4. my-books project status
  • 26. Summary Chapter 6. Intercomponent communication 6.1. Aurelia components 6.1.1. The component lifecycle 6.2. Enhancing my-books 6.2.1. Aurelia’s three core intercomponent-communication techniques 6.3. Passing data to child components with data binding 6.4. Event Aggregator to the rescue 6.4.1. The Event Aggregator pattern 6.4.2. The Aurelia Event Aggregator
  • 27. 6.4.3. Fixing book removal with the Event Aggregator 6.5. Extending my-books 6.5.1. Step 1: Installing the required modules 6.5.2. Step 2: Adding the date-format value converter 6.5.3. Step 3: Enhancing the book API 6.5.4. Step 4: Creating the book component 6.5.5. Step 5: Creating the edit-book component 6.5.6. Step 6: Modifying the book-list component 6.5.7. Step 7: Modifying the books component 6.6. Custom events 6.6.1. Browser support for custom events
  • 28. 6.6.2. Using custom events 6.6.3. Implementing the star-rating component Summary Chapter 7. Working with forms 7.1. Working with forms in my-books 7.2. Check boxes 7.3. Radio elements 7.3.1. Step 1: Modifying the book API 7.3.2. Step 2: Modifying the Books view-model 7.3.3. Step 3: Passing the genres and shelf arrays down the component hierarchy
  • 29. 7.3.4. Step 4: Modifying the EditBooks view-model 7.3.5. Step 5: Modifying the edit-book view 7.4. Select controls 7.4.1. Single-value select binding 7.4.2. Multiple-value select binding 7.5. Validation 7.5.1. The Aurelia validation plugin 7.5.2. Aurelia validation overview 7.5.3. Adding validation to the edit-books form Summary Chapter 8. Working with HTTP
  • 30. 8.1. Overview of the Aurelia HTTP toolkit 8.2. Using aurelia-fetch-client 8.2.1. Adding fetch to my-books 8.2.2. Intercepting and manipulating requests 8.3. Working with aurelia-http-client Summary Chapter 9. Routing 9.1. Understanding client-side routing 9.2. Introducing the Aurelia router 9.2.1. Basic configuration
  • 31. 9.2.2. Routing metadata 9.3. Passing route data to components 9.3.1. Route option types 9.3.2. Adding the user-management pages 9.4. Specifying route modules dynamically 9.5. The screen-activation lifecycle and the route pipeline 9.5.1. The screen-activation lifecycle 9.5.2. Pipeline steps 9.6. Aurelia’s 404 9.6.1. Handling an unknown route: option 1, moduleId 9.6.2. Handling unknown routes: option 2, a function
  • 32. 9.7. Redirecting routes 9.8. View ports 9.9. Extending my-books with layouts 9.9.1. Creating the layouts 9.9.2. Adding the login view 9.9.3. Modifying the routing configuration 9.10. my-books project status Summary Chapter 10. Authentication 10.1. Client-side authentication
  • 33. 10.1.1. Token-based authentication 10.1.2. Comparing cookie- and token-based authentication approaches 10.1.3. JWT format 10.2. Securing my-books 10.2.1. Authentication architecture 10.2.2. Creating the authentication service 10.2.3. Implementing login 10.2.4. Intercepting HTTP requests 10.2.5. Routing redirection 10.2.6. Filtering the navigation bar 10.3. my-books project status
  • 34. Summary Chapter 11. Dynamic composition 11.1. Static vs. dynamic composition 11.2. The <compose> custom element 11.3. Dynamically composed views 11.3.1. Creating partial views 11.3.2. Creating a configurable form with dynamic composition Summary Chapter 12. Web Components and Aurelia 12.1. Introducing Web Components
  • 35. 12.2. HTML Imports 12.3. HTML Templates 12.3.1. Using HTML Templates in Aurelia 12.4. Custom elements 12.5. The Shadow DOM 12.5.1. Using the Shadow DOM with Aurelia 12.6. Creating the my-books share-book component 12.6.1. Adding the Share button 12.6.2. Creating the ux-card component 12.6.3. Creating the subcomponents 12.6.4. Creating the share-book-card component
  • 36. 12.6.5. Tying it all together 12.7. my-books project status Summary Chapter 13. Extending Aurelia 13.1. Overriding Aurelia’s default conventions 13.1.1. Specifying a view template relative path with @useView 13.1.2. Handling custom-element views manually with @noView 13.1.3. Specifying views as template strings with @inlineView 13.1.4. Explicitly naming custom elements with @customElement 13.1.5. Explicitly naming custom attributes with @customAttribute
  • 37. 13.2. Creating an inspect custom binding behavior 13.3. Creating a Selectize.js custom attribute 13.4. my-books project status Summary Chapter 14. Animation 14.1. Getting started with SPA animations 14.1.1. When and what should you animate? 14.1.2. CSS animations 14.1.3. JavaScript animations 14.2. Aurelia’s animation framework 14.2.1. The animation API
  • 38. 14.3. CSS animations with Aurelia 14.3.1. Adding transitions on au-enter 14.3.2. Adding transitions when classes are added or removed Summary 3. Aurelia in the real world Chapter 15. Testing 15.1. Testing SPAs 15.2. Get started testing with the Aurelia CLI 15.2.1. Creating a Hello World test 15.3. Testing value converters
  • 39. 15.4. Testing services 15.5. Testing custom elements 15.6. Testing custom attributes 15.7. End-to-end testing 15.7.1. Testing the login user stories 15.7.2. Running the tests Summary Chapter 16. Deploying Aurelia applications 16.1. SPA bundling 16.1.1. What about HTTP/2? 16.2. Bundling and the Aurelia CLI
  • 40. 16.2.1. Aurelia environments 16.2.2. Versioning bundles 16.2.3. Splitting application bundles 16.3. Deploying my-books to Firebase Summary Appendix. Installation and setup A.1. Installing Node.js A.2. Installing the Aurelia CLI tool A.3. Troubleshooting A.4. Adding Bootstrap
  • 41. Installing Bootstrap 4 A.5. Adding Font Awesome A.6. Installing the Aurelia validation plugin A.7. Setting up my-books-server Installing MongoDB on macOS Installing MongoDB on Linux Installing MongoDB on Windows Cloning the my-books-server repository Starting MongoDB server Starting the MongoDB server Installing the aurelia-http-client package
  • 42. Enabling my-books-server JWT authentication My-books-server: user credentials A.8. My-books book-sharing-component prerequisites Installing aurelia-dialog Updating the my-books stylesheet A.9. Installing selectize.js A.10. Installing aurelia-animator-css Installing the npm package using the Aurelia CLI Adding the plugin to the main module A.11. Installing Aurelia testing dependencies
  • 43. Aurelia glossary Aurelia CLI cheat sheet Index List of Figures List of Tables List of Listings
  • 44. Preface I first came across Aurelia in a .NET Rocks! podcast interview with the framework’s creator, Rob Eisenberg. I particularly remember that evening because I had more than my usual podcast-listening time commuting from work, due to a flat tire (the third that month—but that’s a different story). At this stage, Rob had just started working on a new single-page application (SPA) framework, which differentiated itself from most other popular frameworks by its focus on clean code and use of convention over configuration to eliminate boilerplate code. Having used other frameworks like Caliburn Micro—which Rob had created for the WPF/Silverlight space for desktop applications—the idea of a framework that followed a similar approach in the world of JavaScript immediately struck a chord with me. As is often the case with information gleaned from podcasts during a daily commute, I stashed away the knowledge and didn’t think about it for some time. Later that year, we were starting a new frontend project and had to choose an SPA framework. With the plethora of options available, the process was daunting. After trawling the web for information that would allow us to make the best decision for the team moving forward, I realized that all the available options provided the same benefits, and much of the choice came down to how much the team would enjoy working with the framework, how quickly we could get something up and running, and how easy it would be to maintain the project going forward. The nugget of information gleaned from the podcast earlier that year came back to me, and I started comparing code samples from Aurelia to other frameworks. The beauty and simplicity of the Aurelia MV* model for building SPAs by using components contrasted starkly with the other approaches I came across. This was enough for us to give Aurelia a shot. Throughout the course of the next year, we built three projects with Aurelia, the first of which went from proof of concept to functioning production application
  • 45. in only a few weeks. This led to an unofficial tour of UK Aurelia user groups, where I had the privilege of meeting some super-smart people working in the .NET and web-development space. At this stage, Aurelia was still in alpha and early beta, and many people hadn’t come across it yet. Although initially sceptical of yet another SPA framework, many developers (particularly in the .NET space) were impressed by Aurelia’s intuitive, component-based development style. The content of these talks (getting started with Aurelia, and component-based development with Aurelia) turned out to be the seeds that grew into this book. Because I (and most other developers I come across) tend to learn far better by example than by theory alone, I’ve built the content around a fictional virtual- bookshelf application (like Goodreads.com) called my-books. You’ll start by creating a bare-bones application via the Aurelia CLI and then progressively layer on various features that users would want in a virtual bookshelf. Fortunately, you can fit more into a book than you can a one-hour talk. In this book, I aim to teach you everything you need to know to build compelling, real- world applications in Aurelia from the ground up.
  • 46. Acknowledgments Some people would say I’m crazy to even thinking about attempting to write a book while at the same time welcoming a newborn into my family earlier this year, and they’d be right! Writing a book was, to put it mildly, more work than expected. I’d like to thank my wife Matilda for supporting me throughout the process and taking on more than her fair share of our family responsibilities. I couldn’t have gotten through it without her. Next, I thank my editor at Manning, Toni Arritola. As I’m writing this, I’m remembering back to when I received my first round of feedback for chapter 1. There was more red than white on the page after all the review comments! I’ve learned a great deal from working with Toni over the past year. This book and my writing technique have benefited beyond measure from her involvement. I’d also like to thank my Manning technical development editor, Nick Watts, and tech proofer Troi Eisler. Their input made an enormous difference in the quality and clarity of my technical explanations and code samples. Next, I thank everyone who submitted feedback on the Manning forum and the Aurelia in Action GitHub repository throughout the MEAP process. It’s been a great motivation to see people reading the chapters and working through them as they’ve been released. Much of the feedback has been factored into the book throughout the MEAP. I also thank the book’s technical peer reviewers, led by Ivan Martinović: Alain Couniot, Alessandro Campeis, Álvaro Falquina, Ashley Grant, Aurelien Gounot, Binh Vo, Geoff Barto, Jeff Smith, Joseph Tingsanchali, Luca Campobasso, Matt Harting, Peter Perlepes, Phil Taffet, Philippe Charrière, and Wayne Mather. Finally, I thank the Aurelia core team, both for their wonderful contributions to
  • 47. the Aurelia open source community by creating and maintaining the project, and for their assistance with the book. Special thanks go to Ashley Grant for reviewing some of the early chapters and providing feedback that I was able to use throughout the rest of the book, and of course to Rob Eisenberg, who was fundamental in helping to get the book out to the Aurelia community.
  • 48. About this book When I first began web development with .NET 2.0 and ASP.NET Web Forms, there was only one paradigm for web applications: the server-side paradigm. This pattern involves making a request for the full page content, including scripts, images, and ads, every time the user performs an action on the page. For the kinds of web applications we were building when I started, this paradigm worked for the most part. If users wanted a richer and more interactive experience, it was typically implemented as a desktop application. With the introduction of jQuery, we saw the possibility of pushing more of the logic that was previously done on the server side of our websites to the client side, communicating back and forth with the server using AJAX. The problem with this approach was that jQuery doesn’t provide guidance for how to structure a client-side application, so many projects implemented during this era devolved into spaghetti code as the size and complexity of the client-side application grew. Smart developers recognized this problem and took the opportunity to create frameworks to simplify building rich user interfaces on the client side. Popular examples include Angular1, Backbone.js, and Knockout.js. With these frameworks, it became easy to write full applications as SPAs that would traditionally have been built as desktop apps. A lot has changed since these frameworks were introduced. Over the past eight years, we’ve seen an almost exponential improvement in both web browser platform development and the JavaScript language itself. With these improvements, opportunity came knocking with a chance to build something better. Aurelia has answered. It takes full advantage of this new environment, allowing you to build sophisticated SPAs with less framework-specific code than was possible in the past.
  • 49. Aurelia in Action was written to give you a kick-start in building SPAs with Aurelia. To begin, we’ll walk through a mental model that describes how the framework works and how the main building blocks fit together. From there, we’ll begin developing the my-books virtual bookshelf sample application. This application starts as a simple shell, which you’ll enhance as you learn the various tools and techniques in the Aurelia framework. By the end of the book, you’ll have built my-books into a full-featured SPA with reusable components, form validation, routing, HTTP interaction, and more. This approach will get you up to speed with Aurelia best practices, while at the same time providing a solid reference project that you can return to for inspiration when building your own Aurelia applications. Who should read this book Aurelia in Action is intended to be read by intermediate developers with at least a basic level of web-development experience. If you’ve built web applications with a server-side technology like ASP.NET MVC or Ruby on Rails with a smattering of jQuery, or have dabbled in the path with another client-side technology like Backbone.js or Angular, you’ll have all the prerequisite knowledge you need to grok the concepts and exercises presented here. Like most web-development technologies today, you can learn most of what you need about Aurelia by reading the online documentation and blogs. But what I aim to do is save you time and effort by weaving all the information you need to know about Aurelia into a consistent narrative that takes you all the way from creating a basic Hello World application to a fully functional SPA, ready for deployment to production. Roadmap
  • 50. The book has 3 parts and 16 chapters. Part 1 introduces Aurelia, covering the key framework building blocks and giving you a bird’s-eye view of the kinds of problems Aurelia can help you solve: Chapter 1 outlines what Aurelia is, what kinds of applications you can build with it, and why you’d want to do that in the first place. Chapter 2 introduces the my-books sample application and steps through the process of creating the first iteration of this application using the Aurelia CLI. We’ll pause at key points in the process to give you glimpses of key framework concepts like components, routing, and event handling. Part 2 explores each of the key tools and techniques available in the Aurelia framework. These chapters go beyond the basics, covering everything you’ll need to build real-world applications: Chapter 3 takes a more in-depth look at two of the major component types you’ll use in Aurelia: custom elements and attributes. You’ll style the my-books application, refactor to components, and get your first look at how to integrate third-party JavaScript dependencies. Chapter 4 looks at the Aurelia templating system. You’ll learn the ins and outs of rendering data to an Aurelia view and handling user interaction with DOM events. Chapter 5 introduces two of the more advanced component types in your Aurelia tool belt: value converters and binding behaviors. You’ll use these component types to create an autocomplete-style filterable table, and optimize some of the my-books user interactions. Chapter 6 outlines the Aurelia component lifecycle. You’ll enhance the my- books application, refactoring to more fine-grained components and wiring them together using intercomponent communication techniques like the Event Aggregator and custom events.
  • 51. Chapter 7 is all about forms. You’ll add an edit-book form to my-books, learning how to use check boxes, radio controls, form validation, and more. Chapter 8 covers HTTP interaction. You’ll connect your burgeoning SPA to a Node.js REST API using Aurelia’s HTTP client libraries. Chapter 9 introduces the concept of SPA routing, why it’s important, and how you can use Aurelia’s router to add sophisticated URL-based navigation to your applications. Chapter 10 covers authentication, answering questions like, “How can I secure an application without cookies?” You’ll combine techniques from previous chapters, like value converters, routing, and HTTP interceptors, to secure the my-books application. Chapter 11 gets fancy with dynamic component composition. You’ll learn how to build your views at runtime, adding a new dimension of flexibility to your applications. Chapter 12 introduces the web-component standards and shows you how to use features like the shadow DOM to create templated components. Chapter 13 goes deep into extending Aurelia, showing you how to override Aurelia’s default conventions, inspect what the binding system is doing under the hood, and create custom attributes that can take a dynamic set of options. Chapter 14 describes the basics of Aurelia’s animation system and framework hooks, teaching you how to animate components using CSS or JavaScript animations. Part 3 covers what you’ll need to know to prepare a production-ready Aurelia application package: Chapter 15 shows how you can use a combination of unit testing and end-to-end testing to iterate quickly on your projects with the confidence that they’re working as designed.
  • 52. Chapter 16 gives you the tools you’ll need to build a deployment package and release to production. You’ll package and deploy the my-books application to the Firebase cloud host. The first two chapters will help you understand the high-level concepts in the Aurelia framework, so I recommend reading them first to build a mental model of how everything fits together. These chapters will also help you set up your development environment and create the initial version of the my-books project. Chapters 3–6 also cover key concepts fundamental to the remainder of the book, so unless you’ve already got a basic knowledge of the Aurelia framework, it would be a good idea to read these before moving on. Each chapter builds on the same sample application, so the remainder of the book is designed to be read sequentially. But if you do want to jump ahead to a specific topic, you can do so by cloning the project’s GitHub repository and changing your working directory to the prior chapter. For example, if you wanted to jump to chapter 10, you could move to the Chapter-9-Complete directory to begin right where chapter 9 left off. About the code This book contains many examples of source code both in numbered listings and inline with normal text. In both cases, source code is formatted in a fixed-width font like this to separate it from ordinary text. In many cases, the original source code has been reformatted; we’ve added line breaks and reworked indentation to accommodate the available page space in the book. Additionally, comments in the source code have often been removed from the listings when the code is described in the text. Code annotations accompany
  • 53. many of the listings, highlighting important concepts. Source code is provided for chapters 2–16. Code listings are available on the publisher’s website at www.manning.com/books/aurelia-in-action and on GitHub at https://github.com/freshcutdevelopment/Aurelia-in-Action. Some of the code listings and exercises are also provided as gists that can be run interactively with GistRun: https://gist.run. Such examples are clearly marked. Because the book follows the iterative development of one sample application, there’s a folder per chapter in the GitHub repository. They follow the convention Chapter-[Number]-Complete. If you run into problems with any of the code samples, you can use the completed versions to cross-reference and troubleshoot problems with your project, or skip to the completed version. The GitHub repository is an active, open source project, so any feedback is welcomed in the form of a GitHub issue or pull request. Online resources Need additional help? The Aurelia project website (http://aurelia.io) is the best place to go to review the online documentation and ask for help. The site includes a discourse forum (https://discourse.aurelia.io) frequented by many community members and Aurelia core framework contributors. Asking a question here will get you the help you need from developers working in the trenches with Aurelia. Book forum
  • 54. Purchase of Aurelia in Action includes free access to a private web forum run by Manning Publications where you can make comments about the book, ask technical questions, and receive help from the author and from other users. To access the forum, go to https://forums.manning.com/forums/aurelia-in-action. You can also learn more about Manning’s forums and the rules of conduct at https://forums.manning.com/forums/about. Manning’s commitment to our readers is to provide a venue where a meaningful dialogue between individual readers and between readers and the author can take place. It is not a commitment to any specific amount of participation on the part of the author, whose contribution to the forum remains voluntary (and unpaid). We suggest you try asking him some challenging questions lest his interest stray! The forum and the archives of previous discussions will be accessible from the publisher’s website as long as the book is in print.
  • 55. Random documents with unrelated content Scribd suggests to you:
  • 56. näiden herramiesten huomiota tai pilannut heidän työnsä rauhallista näyttämöä. Kohtasitten kristittyjä ja herrasmiehiä, sir." "Maksoin paikastani kuten muutkin", sanoi Swinney. "Eikö isäni ostanut osakk—?" "Hiljaa, sir! Arvoisa isänne kyllä osti tämän yrityksen osakkeita, jotka tulevat jonakin päivänä tuottamaan hänelle suurenmoisen voiton. Hän siis todellakin hankki osakkeita, muuten ette olisi koskaan täällä. Voin tyydytyksellä sanoa, että jokaisella täällä olevalla nuorella ystävälläni on isä, veli, rakas sukulainen tai ystävä, jolla on samanlainen suhde yritykseemme; eikä yksikään heistä ole ilman motivaatiota hankkimaan, hyvää komissiota vastaan, muita henkilöitä liittymään mainioon yhdistykseemme. Mutta, sir, minä olen sen johtaja. Näette minun allekirjoittaneen työsopimuksenne; ja samalla tavoin minä, John Brough, peruutan sen. Menkää pois, sir! — jättäkää meidät — luopukaa perheestä, joka ei voi enää pitää teitä rinnoillaan! Herra Swinney, olen itkenyt — olen rukoillut, ennenkuin tulin tähän johtopäätökseen; olen kuunnellut neuvoja, sir, ja olen lujasti päättänyt. Lähtekää luotamme!" "En kuitenkaan ilman kolmen kuukauden palkkaa, herra Brough." "Se maksetaan isällenne, hyvä herra." "Vielä mitä! minäpä kerron Teille jotakin, Brough, minä olen täysikäinen, ja jollette Te maksa minulle palkkaani, niin minä laitan Teidät arestiin — lempo soi, sen minä teen! Minäpä tyyrään Teidät tyrmään, taikka ei nimeni ole Bob Swinney!" "Kirjoittakaa, herra Roundhand, tälle turmeltuneelle nuorelle miehelle kolmen kuukauden palkan määräys."
  • 57. "Kaksikymmentä yksi puntaa ja viisi, Roundhand, eikä leimasta mitään", huusi julkea Swinney. — Siinä se on, kuitataan! Ei Teidän tarvitse osottaa sitä pankkiirilleni. Ja jos joku Teistä, pojat, haluaa lasillisen punssia tänä iltana kello kahdeksan, niin Bob Swinneyn luo! Maksusta ei puhetta. Jos herra Brough tahtoisi tehdä minulle sen kunnian ja lyöttäytyisi joukkoon? Tulkaa pois, elkää huoliko kieltäytyä!" Me emme jaksaneet kestää enään tätä häpeämättömyyttä, vaan purskahdimme nauramaan kuin villityt. "Ulos huoneesta!" kiljui herra Brough, jonka kasvot olivat menneet aivan sinisiksi. Ja Bob otti naulakosta vaalean hattunsa ja marssi matkaansa, "savipönttönsä", kuten hän sitä nimitti, vahvasti kallellaan. Hänen mentyään herra Brough piti meille toisen luennon, jonka neuvoja me kaikki päätimme käyttää hyväksemme, ja astuen Roundhandin pöydän ääreen, asetti kätensä kassanhoitajan olalle ja katsoi pääkirjaan. "Paljonko rahaa on tänään tullut, Roundhand?" sanoi hän hyvin ystävällisesti. "Se leskihän se toi rahansa: yhdeksänsataa ja neljä puntaa kymmenen shillinkiä ja kuusi pennyä. Kapteeni Sparr on maksanut osakkeensa täyteen, mutta hän nurisee ja sanoo, ettei hänellä ole enään mitään; viisikymmentä osaketta, kaksi maksuerää, tekee kolme viideskymmenesosaa, herra johtaja." "Hän nurisee aina!" "Hän sanoo, ettei hänellä ole penniäkään, millä ravita ruumisraukkaansa osingon jakopäivään asti."
  • 58. "Entä mitä muuta?" Herra Roundhand selaili kirjan läpi ja sai kokoon kaikkiaan yhdeksäntoista sataa puntaa. Meidän liikkeemme luisti erinomaisesti nykyisin. Vaan siihen aikaan kun minä tulin konttoriin, meidän oli tapana istuskella ja naureskella, laskea leikkiä ja lukea lehtiä päivät päästään, ja hirveällä hopulla laittautua paikoillemme, kun joku sattumoisin asioissaan astui sisään. Silloin ei Brough koskaan välittänyt naurustamme tai laulustamme ja oli mitä parhaissa väleissä Bob Swinneyn kanssa. Mutta se oli entisiin aikoihin, ennen kun me olimme päässeet oikein varuksiimme. "Yhdeksäntoista sataa puntaa, ja tuhat puntaa osakkeita! Oivallista, Roundhand — oivallista, hyvät herrat! Muistakaa, että jokainen osake, minkä Te tuotte lisää, tuottaa Teille viisi prosenttia käteistä! Pitäkää mielessä ystävänne — pysykää uskollisesti paikallanne — eläkää säännöllisesti — toivon, ettei Teistä kukaan unohda käydä kirkossa. Kuka astuu herra Swinneyn paikalle?" "Herra Samuel Titmarsh." "Herra Titmarsh, minä onnittelen Teitä. Antakaa minulle kätenne, hyvä herra. Te olette nyt tämän yhtiön kahdestoista kirjanpitäjä ja Teidän palkkanne on niinmuodoin kasvanut viisi puntaa vuodessa. Kuinka jaksaa Teidän arvoisa äitinne, hyvä herra — Teidän kallis ja erinomainen äiti-rouvanne? Hyvässä voinnissa toivoakseni? Ja minä palavasti rukoilen, että tämä konttori kauan, kauan saa maksaa hänelle vuosieläkkeensä! Pankaapa muistiin, että jos hänellä on enemmän rahoja talletettavana, niin hän nyt saa korkeamman koron kuin viimeksi, koska hän on vuotta vanhempi, ja viisi prosenttia Teille, poikaseni! Miksi ette Te yhtä hyvin kuin joku muu? Nuoret
  • 59. miehet ovat aina nuoria miehiä eikä kymmenen punnan paperi ole haitaksi. Vai miten, herra Abednego?" "Oh, eihän toki!" vastaa Abednego, kolmas kirjanpitäjä, joka juuri oli kielinyt Swinneystä, ja hän rupesi nauramaan, kuten me tosiaan kaikkikin teimme, milloin hyvänsä herra Brough laski jotakin pilan tapaista, emme siksi että se oli pilapuhetta, vaan meidän oli tapana nähdä tarkotus hänen kasvojensa ilmeestä. "Noo, Roundhand", sanoo hän, "sananen Teidän kanssanne muista asioista. Rouva Brough tahtoo tietää, miksi ihmeessä Te ette koskaan eksy Fulhamiin." "Hyvänen aika, se on liika ystävällistä", sanoi Roundhand perin ihastuneena. "Mainitkaa joku päivä, ukkoseni. Sanotaan lauantaina, ja ottakaa yömyssy mukaanne." "Te olette tosiaan liika ystävällinen. Minä olisin ylenmäärin ihastunut, mutta —" "Mutta — ei mitään muttaa, ukkoseni. Kuulkaapas, kun rahaministeri osottaa minulle sen kunnian, että syö päivällistä kanssamme, ja minä tahdon, että Te kohtaatte hänet. Sillä asia on se, että minä olen Hänen Ylhäisyydelleen kehunut Teitä parhaimmaksi kassanhoitajaksi koko saarivaltakunnassa." Roundhand ei voinut kieltäytyä seuraamasta tällaista kutsua, vaikka, kuten hän oli kertonut meille, rouva Roundhand ja hän olivat aikeissa viettää lauantain ja sunnuntain Putneyssä,[6] ja me, jotka tiesimme minkälaista mies-polosen elämä oli, olimme varmat siitä,
  • 60. että pääkirjanpitäjä saisi koreat haukkumiset vaimoltaan, kun tämä kuulisi, mistä oli kysymys. Hän oli näetsen kovasti nyreissään rouva Broughille, sillä rouva Brough, jolla oli vaunut, väitti, ettei tiennyt, missä Pentonville[7] sijaitsi, eikä siksi voinut käydä tervehtimässä rouva Roundhandia. Vaikka olisihan toki luullut hänen ajajansa löytävän tien. "Jaha, ja sitten, Roundhand", jatkoi johtajamme, "kirjoittakaa, tehkää hyvin, seitsemän sadan määräys. Hoo, elkäähän repäiskö silmiänne, mies, en ole karkuun lähdössä. Kas niin — seitsemän sataa — ja yhdeksänkymmentä, sanokaamme yksin tein. Meillä on yhtiökokous lauantaina, mutta elkää olko huolissanne, minä kyllä teen niistä tilin, ennen kun ajetaan luokseni. Ministerin otamme vaunuihin Whitehallissa".[8] Niin sanoen herra Brough käänsi maksuosotuksen kokoon ja hyvin sydämellisesti puristaen herra Roundhandin kättä, nousi nelivaljakon vetämiin vaunuihinsa (hän käytti aina neljää hevosta, Cityssäkin, missä se on niin vaikeata), jotka odottivat häntä konttorin ovella. Bob Swinneyn oli tapana sanoa, että Brough velkoi yhtiötä kahdesta hevosesta, mutta ei koskaan ollut uskominen puoliakaan Bobin puheista, hän oli semmoinen koiranleuka ja pilkkakirves. En tiedä, mitenkä lie ollut, mutta minusta ja eräästä Hoskins nimisestä pojasta (yhdestoista kirjanpitäjä), joka asui kanssani Salisburyn torikorttelissa, Fleet-kadulla, missä meillä oli hauska asumus toisessa kerroksessa, tuntui huilunsoittelumme tavattoman ikävältä tänä iltana, ja kun ehtoo oli hyvin kaunis, lähdimme kuljeksimaan West Endiin[9] päin. Saapuessamme vastapäätä Covent Gardenin teatteria olimme aivan lähellä "Globen krouvia" ja muistimme samalla Bob Swinneyn vieraanvaraisen kutsun. Emme
  • 61. olleet mitenkään kuvitelleet, että hän oli tarkottanut totta kutsullaan, mutta arvelimme, että saattaisi sittenkin pistäytyä sisälle; missään tapauksessa siitä ei voinut vahinkoa olla. Vaan sielläpä me tapasimmekin Bobin takasalissa, missä hän oli luvannut olla, istumassa pöydän päässä, paksun tupakansavun keskellä, ja kahdeksantoista pojistamme kalistelemassa ja hakkaamassa lasejansa pöytään. Minkä rähinän he nostivat meidän astuessamme sisään! "Hurraa!" huusi Bob, "tässä tulee kaksi lisää! Vielä kaksi tuolia, Mary, vielä kaksi lasia, vielä lämmintä vettä ja vielä kaksi kippoa viinaa! Kukapa herran nimessä olisi uskonut näkevänsä Titin täällä?" "Niin", sanoin minä, "me tulimme tänne aivan sattumalta." Nämät sanat synnyttivät uuden kauhean metakan — seikka oli nimittäin tosiaan se, että joka mies näistä kahdeksastatoista oli sanonut tulleensa sattumalta. Miten olikaan, hupaisen illan se sattuma meille antoikin, ja antelias Bob Swinney maksoi joka killingin. "Hyvät herrat!" sanoi hän maksettuaan laskun, "olen kutsunut Teidät juomaan kunnioitettavan herra John Broughin terveydeksi, koska minun on kiittäminen häntä siitä kahdenkymmenen yhden punnan ja viiden shillingin lahjasta, minkä hän antoi minulle tänä aamuna. Mitä sanonkaan — kaksikymmentä yksi ja viisi? Ei, vaan sen ja vielä yhden kuukauden palkan, joka minun olisi ollut maksaminen — sakkoa — viimeistä penniä myöden, — lempo soi! siitä että olin lähtenyt paikastani, kuten olin aikonut tehdä huomen- aamulla. Minä olen saanut uuden paikan, erinomaisen paikan, voin vakuuttaa. Viisi guineaa viikossa, kuusi matkaa vuodessa, oma
  • 62. hevonen ja kevät kiesit ja kuljettava Länsi-Englannissa öljyä ja valaanrasvaa tarjoten. Hornaan kaasuyhtiö, ja eläköön herrat Gann ja Kumpp., Thames-kadulla Lontoon Cityssä!" Olen näin seikkaperäisesti kertonut West Diddlesex vakuutusyhtiöstä ja herra Broughista, sen toimeenpanevasta johtajasta (vaikkei yhtiötä eikä sen johtajaa, hyvin ymmärrettävästi ole mainittu oikealta nimeltä), sen tähden että minun ja timanttineulani kohtalo oli salaperäisellä tavalla yhteydessä kummankin kanssa, kuten kohta näytän. Teidän täytyy saada tietää, että West Diddlesexin pojat suuresti kunnioittivat minua, sen tähden, että minä tulin paremmasta perheestä kuin enimmät heistä, olin saanut klassillisen kasvatuksen, ja etenkin, koska minulla oli rikas täti, rouva Hoggarty, josta, täytyy se tunnustaakseni, minun oli tapana vankasti kerskailla. Ei ole mitenkään haitallista olla arvossa pidetty tässä maailmassa, mikäli olen huomannut, ja ellei hieman kehuskele puolestaan, niin saattaa olla varma siitä, ettei tuttavista kenkään näe vaivaa toisen tähden eikä kerro maailmalle hänen ansioitaan. Niin että kun minä kotona käytyäni palasin konttoriin ja asetuin sijalleni vanhan päiväkirjan ääreen vastapäätä Birchin-kujaa päin antavaa likaista ikkunaa, annoin piankin poikasten tietää, että vaikka rouva Hoggarty ei ollut suonut minulle suurta rahasummaa, kuten olin odottanut — minä olin todella luvannut tusinalle heistä pitää kekkerit joen varrella, jos luvatut rikkaudet tulisivat minulle — minä annoin heidän tietää, sanon, että vaikka tätini ei ollut suonut minulle yhtään rahaa, hän oli lahjoittanut minulle komean timantin, joka oli ainakin kolmenkymmenen guinean arvoinen, ja että minä jonakuna päivänä prameilisin liikkeessä timantti rinnassani.
  • 63. "Oo, antakaa nähdä se!" sanoo Abednego, jonka isä oli väärien jalokivien ja kultaketjujen kauppias Hanway Yardissa, ja minä lupasin, että hänen piti saada se silmätäkseen, heti kun se oli uudessa asussa. Kun kaikki taskurahanikin olivat lopen huvenneet (istuinpaikka vaunuissa kotiin ja takaisin, viisi shillinkiä piikatytölle kotona, kymmenen tätini neitsyelle ja palvelijalle, viisikolmatta shillinkiä häviötä whistipelissä, kuten jo kerroin, ja viisitoista shillinkiä kuusi pennyä pieniin hopeasaksiin erään henkilön armaille pikku sormille), niin Roundhand, joka oli perin hyväsydäminen mies, kutsui minut päivälliselle ja antoi etukäteen kuukauden palkan: seitsemän puntaa yhden shillingin ja kahdeksan pennyä. Roundhandin kotona Myddeltonin torikorttelissa Pentonvillen varrella syötäessä vasikan selkäpaistia ja juotaessa lasillista portteria opin tuntemaan ja näinkin, kuinka pahasti vaimo häntä piteli, niinkuin taannoin kerroin. Poika parka! — meidän kaikkien alakirjanpitäjäin mielestä oli mainio asia istua yksinään pöytänsä ääressä ja nostaa viisikymmentä puntaa kuussa, kuten Roundhand, mutta minusta tuntuu, että Hoskinsin ja minun oli, luritellessamme yhdessä huilua toisen kerran kamarissamme Salisburykorttelissa, koko paljoa parempi olla kuin päämiehemme — ja sopusointukin eheämpi, vaikka meidän soittelumme oli kylläkin säälittävää. Eräänä päivänä Gus Hoskins ja minä pyysimme Roundhandilta lupaa saada lähteä jo kello kolmelta, meillä kun oli erityistä asiaa West Endiin. Hän tiesi, että se koski Hoggartyn isoa timanttia, ja antoi luvan, ja me matkaan. Saavuttuamme St. Martin's-kujalle Gus osti sikaarin näyttääkseen juhlalliselta, ja puhalteli sitä koko matkan kujaa ja lehtokujia pitkin Coventry-kadulle asti, missä herra Poloniuksen kauppa on, kuten jokainen tietää.
  • 64. Ovi oli auki, ja useat vaunut täynnä naisia pysähtyivät ulkopuolelle ja purkivat kuormansa. Gus pisti kädet taskuunsa — siihen aikaan käytettiin hyvin laajoja housuja, joissa oli avarat laskokset ja hyvin kapeat lahkeen suut, mistä saappaat tai puolisaappaat pistettiin ulos (hienostolla oli saappaat, mutta me Cityn puotipojat, joilla oli kahdeksankymmenen punnan vuosipalkka, tyydyimme puolisaappaisiin) —, ja kun Gus levitti housujansa niin kauas lonkistaan kuin mahdollista ja tuprutteli tupakkaansa ja iski katuun kenkiensä raudoitettuja korkoja ja kun hänellä lisäksi oli niin nuoreksi mieheksi perin tuuhea poskiparta, niin hän todella näytti oikein komealta pojalta, jota jokainen pitikin merkittävänä henkilönä. Hän ei kuitenkaan tahtonut tulla puotiin sisälle, vaan jäi ulos katsoa tuijottamaan akkunassa olevia kultaisia patoja ja kattiloita. Minä astuin sisään ja vähän yskittyäni ja ryittyäni, sillä en ollut koskaan ennen käynyt niin hienossa paikassa, pyysin eräältä herrasmieheltä saada puhutella herra Poloniusta. "Millä saatan Teitä palvella, hyvä herra?" sanoo herra Polonius, joka sattui seisomaan siinä vallan vieressä palvellen kolmea naisihmistä, yhtä hyvin vanhaa ja kahta nuorta, jotka tarkasti tutkivat muuatta helmistä kaulakoristetta. "Tämä koriste on luullakseni ennenkin ollut Teidän huostassanne, hyvä herra", sanoin minä vetäen esiin solkeni takin taskusta. — Se on kuulunut tädilleni, rouva Hoggartylle Castle Hoggartysta." Vanha nainen, joka seisoi lähellä, katsahti taakseen, kun tätä puhuin. "Minä myin hänelle kultaiset kaulavitjat ja lyövän taskukellon vuonna 1795", sanoi herra Polonius, joka tahtoi osottaa muistavansa
  • 65. kaikki, "ja kapteenille hopeaisen punssikauhan. Miten jaksaa majuri — eversti — kenraali — hm! hyvä herra?" "Kenraali", sanoin minä. "Ikäväkseni täytyy minun sanoa", vaikka olin vallan ylpeä siitä, että tämä hieno mies puhutteli minua tällä tapaa, "herra Hoggartya ei — ole enään. Mutta minun tätini on lahjoittanut minulle tämän — tämän korukalun, joka, kuten näette, sisältää hänen miehensä kuvan. Sitä minä pyydän Teitä, hyvä herra, huolella säilyttämään, ja tätini haluaa, että te laitatte tämän timantin sievästi uusiin puitteisiin." "Sievästi ja soreasti, tietenkin, hyvä herra." "Niin, nykyaikaiseen tapaan, ja lähettäkää lasku hänelle. Siinähän on tuon korukapineen ympärillä melko määrä kultaa, jonka Te tietenkin suvaitsette laskea pois." "Viimeistä pennyä myöten", sanoo herra Polonius kumartaen ja katsellen timanttia. "Se on tosiaan ihmeellinen kapine", sanoi hän, "vaikka timantti on todellakin soma pieni kappale. Katsokaahan sitä, mylady. Se on iiriläistä tekoa, leimattu v:lta 95 ja saattaa kenties muistuttaa Teidän Armonne varhaisimman nuoruuden aikoja." "Olkaa höpisemättä, herra Polonius!" sanoi vanha nainen, pieni kaitakasvoinen vaimo, jonka kasvot olivat tuhansissa rypyissä. "Kuinka Te rohkenette, herra hyvä, puhua sellaista hölynpölyä minun kaltaiselleni vanhalle vaimolle. Enkö minä ollut viisikymmenvuotias vuonna 95 ja iso-äiti vuonna 96?" Hän pisti esiin pari kuihtunutta, vapisevaa kättä, avasi kannen, tarkasti sitä hetkisen ja sitten purskahti nauramaan: "Niin totta kuin elän, onhan se iso Hoggartyn timantti!"
  • 66. Taivasten tekijät! mikä talismani olikaan joutunut käsiini? "Katsokaa, tytöt", jatkoi vanha nainen, "tämä on koko Irlannin isoin koriste. Tämä punanaamainen mies tässä keskellä on polonen Mick Hoggarty, eräs orpanani, joka oli rakastunut minuun vuonna 84, kun minä juuri olin menettänyt rakkaan isoisä-parkanne. Nämät kolmetoista punaista hiuksenheiskaletta edustavat hänen kolmeatoista kuuluisaa sisartaan — Biddy, Minny, Theddy, Widdy (lyhennys Williaminasta), Freddy, Izzy, Tizzy, Mysie, Grizzy, Polly, Dolly, Neil ja Bell — kaikki naimisissa, kaikki julmia ja kaikki punatukkaisia. Ja kenen heistä Te olette poika, nuori mies? — vaikka oikeus vaatii myöntämään, ettette ole perheen muotoon." Kaksi kaunista nuorta naista käänsi minuun kaksi kaunista mustaa silmäparia ja odotti vastausta, jonka he olisivat saaneetkin, ellei vanha vaimo olisi ruvennut latelemaan satoja juttuja yllämainituista kolmestatoista naisesta ja kaikista heidän rakastajistaan, kaikista heidän vastoinkäymisistään ja kaikista Mick Hoggartyn kaksintaisteluista. Hän oli viidenkymmenen vuoden roskajutut tietävä kronika. Vihdoin hänet keskeytti ankara yskäkohtaus, jonka loputtua herra Polonius erinomaisen kohteliaasti kysyi minulta, mihin hän saisi lähettää neulan ja tahdoinko pitää hiukset. "En", sanoin minä, "en välitä hiuksista." "Entä neula, hyvä herra?" Minua oli hävettänyt osotteeni ilmoittaminen. "Mutta kissa vieköön!" ajattelin minä, "miksi minä? —" Saa kuninkaalta aatelin ja arvon kreivi, herttua, on miehen kunto kuitenkin jaella vaikea.
  • 67. Mitä syytä minun olisi salata näiltä naisilta, missä asun? "Olkaa hyvä ja lähettäkää kapine, saatuanne sen valmiiksi, herra Titmarshille, n:o 3 Bell-kuja, Salisburyn kortteli, lähellä St. Briden kirkkoa, Fleet-katu. Pyydän, soittakaa toisen kerroksen kelloa." "Hyvä herra, kuinka?" sanoi herra Polonius. "Kuinka!" huusi vanha vaimo. "Herra Kuinka? Mais, ma chère, c'est impayable.[10] Tulkaa pois — tääll' on vaunut! Antakaa käsivartenne, herra Kuinka, nouskaa sisään ja kertokaa minulle kaikki kolmestatoista tädistänne." Hän tarttui minua käsipuolesta ja hynttäsi puodista niin kerkeään kuin mahdollista, nuorten naisten nauraen seuratessa perästä. "No, hypätkää sisään, kuuletteko?" sanoi hän pistäen terävän nokkansa ulos vaunun akkunasta. "En voi, mylady", sanon minä, "minulla on täällä ystävä." "Vielä vai! mäkeen koko ystävänne ja hypätkää sisään!" Ja ennen kun kerkesin kunnolleen saada sanaa suustani, työnsi muuan iso puuteroitu roikale, keltaiset samettiset polvihousut jalassa, minut vaunujen portaita ylös ja paiskasi oven kiinni perässäni. Juuri vaunujen vieriessä pois ennätin silmätä Hoskinsiin, enkä koskaan unohda hänen muotoansa. Siinä seisoi Gus, suu ammollaan, silmät pyöreinä muljottaen, savuava sikaari kädessään, ihmetellen minkä jaksoi minulle juuri sattunutta merkillistä seikkailua.
  • 68. "Kuka on tämä Titmarsh?" sanoo Gus. "Vaunuihin oli aatelinen kruunu maalattu, niin hitto soi olikin!"
  • 69. KOLMAS LUKU KUINKA TIMANTIN OMISTAJA VIEDÄÄN POIS UPEISSA VAUNUISSA JA HYVÄ ONNI HÄNTÄ VIELÄ EDELLEEN SEURAA. Minä istuin vaunujen takaistuimella vierelläni sangen sievä nuori nainen, rakkaan Maryni iässä — nimittäin seitsemäntoista vuotta ja yhdeksän kuukautta; ja meitä vastapäätä istui vanha kreivitär ja hänen toinen pojantyttärensä — kaunis hänkin, vaikka kymmentä vuotta vanhempi. Muistan, että minulla tuona päivänä oli ylläni kiiltonappinen sininen takkini ja nankinihousut, valkea koruliivi ja päässä Dandon silkkihattu, joka juuri oli tullut muotiin vuonna 22 ja näytti melkoista loistavammalta kuin paras majavanhattu. "Ja kuka oli se kamala olento" — alotti hänen armonsa jälleen — "se kauhean raakamainen, suurikitainen tomppeli korkorautaisine kenkineen ja jäljiteltyine kultavitjoineen, joka töllisteli meitä noustessamme vaunuihin?" Kuinka hän oli saattanut huomata, että Gusin vitjat olivat jäljitellyt, sitä en voi sanoa, mutta niin ne olivat, ja me olimme ostaneet ne viidelläkolmatta shillingillä ja kuudella pennyllä vain viikko takaperin MacPhailin kaupasta St. Paulin kirkkotorin varrelta. Mutta minä en
  • 70. pitänyt siitä, että ystävääni soimattiin ja siksi puhuin hänen puolestaan: "Rouva hyvä", sanon minä, "se nuori gentlemanni on nimeltään Augustus Hoskins. Me asumme yhdessä eikä löydy parempaa eikä hyväsydämisempää poikaa." "Te teette aivan oikein puolustaessanne ystäviänne, hyvä herra", sanoi toinen naisista, jonka nimi näkyi olevan lady Jane. "Niin totta vie tekeekin, lady Jane, ja minä pidän uljuudesta nuoressa miehessä. Vai on hänen nimensä Hoskins? Minä tunnen, ystäväiseni, kaikki Englannin Hoskinsit. Niitä on Lincolnshiren Hoskinsit, Shropshiren Hoskinsit — sanotaan, että amiraalin tytär, Bell, oli rakastunut mustaan palvelijaan tai laivamieheen tai johonkin semmoiseen, mutta maailmahan on niin panettelevainen. Niitä on myöskin tohtori Hoskins Bathista, joka hoiti rakasta Drum-parkaa hänen sairastaessaan kurkkumätää. Ja rakas vanha Fred Hoskins- raukka, luuvaloinen kenraali. Minä muistan, kuinka hän oli hoikka kuin hämähäkki vuonna 84 ja elävä kuin ammatti-ilveilijä ja rakastunut minuun — oo, kuinka hän oli rakastunut minuun!" "Sinulla näyttää olleen kokonainen lauma ihailijoita noihin aikoihin, isoäiti?" sanoi lady Jane. "Satoja, rakkahani — satoja tuhansia! Minä olin koko Bathin suosikki ja suuri kaunotar myöskin. Olisitteko koskaan tullut sitä ajatelleeksi nyt, vastatkaa omantunnonmukaisesti ja imartelematta, herra… kuinka se nimenne kuuluikaan?" "Tosiaankaan, hyvä rouva, en koskaan", vastasin minä, sillä vanha vaimo oli niin ruma kuin olla saattaa. Ja sen sanoessani molemmat
  • 71. nuoret naiset kirkuen nauramaan, ja minä näin, mitenkä suurine poskipartoineen ylvästelevät lakeijat virnottelivat vaunujen perässä. "Toden totta, Te olette sangen suorapuheinen, herra… mikä olikaan nimenne — sangen suorapuheinen todellakin, mutta minä pidän suorapuheisista nuorista miehistä. Mutta kaunotar minä olin. Kysykääpä ystävänne sedältä, kenraalilta. Hän kuuluu Lincolnshiren Hoskinsien haaraan. Minä näin, että hänellä oli suuressa määrin perheen sukupiirteet. Onko hän vanhin poika? Se on sievä tila, vaikka pahasti velkaantunut, sillä vanha Sir George oli aika pahuus mieheksi — Hanburyn Williamsin ja Lyttletonin ja noiden muiden kauheitten, ilkeitten, hirveitten ihmisten ystäviä! Kuinka paljon luulette, herraseni, hänen saavan nyt, kun amiraali kuolee?" "Kas sitä en osaa sanoa, mutta amiraali ei ole ystäväni isä." "Eikö hänen ystävänsä — mutta onpahan, sanon minä, enkä minä ole koskaan väärässä. Kuka hänen isänsä sitten on?" "Mylady, Gusin isä on nahkakauppias Skinnerkadulta Snow Hillistä, hyvin arvossa pidetty kauppahuone, mylady. Mutta Gus on vain kolmas poika eikä siksi saata odottaa suurta osuutta omaisuudesta." Molemmat nuoret naiset hymyilivät tälle selitykselle — vanha vaimo sanoi: "Kuinka?" "Minä pidän siitä, hyvä herra", sanoi lady Jane, "että Te ette häpeä ystäviänne, minkälainen heidän asemansa elämässä lieneekin. Onko meidän sallittu päästää Teidät alas jossakin, herra Titmarsh?" "Ei mitään hätää, mylady", sanon minä. "Meillä on tänään vapaata konttorista — ainakin antoi Roundhand lupaa minulle ja Gusille, ja
  • 72. minun on erittäin mieluista ajella vähäsen puistossa, ellei se ole vaivaksi." "Epäilemättä se on meille — äärettömän hauskaa", vastasi lady Jane, vaikka pikemmin vakavan muotoisena. "Oi, aivan varmasti!" vahvistaa lady Fanny paukuttaen käsiään. "Eikö totta, isoäiti? Ja sen jälkeen kun me olemme olleet puistossa, me saatamme ajella Kensingtonin puutarhassa, jos herra Titmarsh ystävällisesti tahtoo olla seuranamme." "Mutta, Fanny, emme tee sillä tavoin", sanoo lady Jane. "Mutta me teemme kumminkin!" huusi lady Drum. "Olenhan vallan menehtyä halusta kuulla jotakin hänen enostaan ja kolmestatoista tädistään, ja te nuoret tytöt pärisette vielä siinä niin, etten tässä saa siunattua sanaa vaihtaa nuoren ystäväni kanssa." Lady Jane kohautti olkiaan eikä virkennyt enään sanaakaan. Lady Fanny, joka oli iloinen kuin kissanpoikanen (jos minun sallitaan sanoa sillä tavoin ylimystöstä), nauroi ja hihitti ja taas punastui, ja näytti olevan kovasti huvitettu sisarensa huonosta tuulesta. Ja kreivitär kävi heti käsiksi Hoggartyn kolmentoista missin historiaan, joka ei ollut läheskään lopussa, kun me saavuimme puistoon. Ette voi ajatellakaan, mitkä sadat herrat siellä selkähevosella ajoivat vaunujen tykö ja puhuttelivat naisia. Heillä oli kaikilla leikkisana lady Drumille, jolla näkyi olevan omalaatuinen luonne, kumarrus lady Janelle ja, varsinkin nuorilla miehillä, kohteliaisuus lady Fannylle.
  • 73. Vaikka lady Fanny kumarteli ja punastui, kuten nuoren naisen tulee, näytti hän kuitenkin ajattelevan jotakin muuta, sillä hän ojenteli päätään ulos vaunuista innolla pälyen ratsastavien joukkoon, ikäänkuin toivoen näkevänsä jonkun. Ahaa, hyvä lady Fanny, minä kyllä tiesin, mitä merkitsi, että teidän kaltaisenne nuori nainen oli hajamielinen ja vaaniskeli ja vain puolittain vastaili hänelle tehtyihin kysymyksiin. Ei huolta Sam Titmarshista, hän kyllä tietää yhtä hyvin kuin kuka muu hyvänsä, mitä eräs henkilö merkitsee, sen takaan. Kun minä näin näiden temppujen jatkuvan, en malttanut olla vihjaisematta lady Janelle osottaakseni, että tiesin mistä päin tuuli kävi. "Minä arvaan, että nuori neiti etsiskelee 'erästä henkilöä'", sanon minä. Silloin oli hänen vuoronsa näyttää totiselta, sen vakuutan, ja hän karahti punaseksi kuin kukko, mutta hetkisen päästä se hyvänluontoinen typykkä katsoi sisareensa ja molemmat nuoret naiset nostivat nenäliinat silmilleen ja alkoivat nauraa — nauraa ikäänkuin minä olisin sanonut kaikkein hullunkurisinta maailmassa. "IL est charmant, votre monsieur",[11] sanoi lady Jane isoäidilleen. Johon minä kumarsin ja vastasin: "Madame, vous me faites beaucoup d'honneur",[12] sillä minä osaan ranskankieltä ja olin hyvilläni, että nämät hyvät naiset olivat suopuneet minuun. "Minä olen vähäpätöinen poika parka, rouva hyvä, enkä ole tottunut Lontoon hienoon elämään, ja minusta todella te olette hyvin ystävällisiä sillä tavoin ottaessanne minut suojaanne ja antaessanne minun ajella hienoissa vaunuissanne." Tällä hetkellä kalpeakasvoinen, viiksihuulinen herra mustan hevosen selässä tuli ratsastaen vaunujen luo, ja siitä, että lady Fanny
  • 74. hieman hytkähti ja samassa kääntyi katsomaan muuanne, minä älysin, että eräs henkilö vihdoinkin oli tullut. "Nöyrin palvelijanne, lady Drum", tervehti hän. "Olen juuri ratsastanut miehen kanssa, joka oli vähillä ampua itsensä rakkaudesta kauniiseen kreivitär Drumiin vuonna — no samapa tuo." "Oliko se Killblazes?" tiedusti vanha rouva. "Hän on armas vanha äijä, ja minä olen aivan valmis karkaamaan hänen kanssansa tällä samalla hetkellä. Vai oliko se ihastuttava vanha piispa? Hänellä on kihara hiuksistani — hän sai sen ollessaan isän kappalaisena; ja saatanpa sanoa Teille, olisi aika työ löytää toinen semmoinen nyt samalta paikalta." "Elkää nyt, mylady!" sanon minä, — elkää sanoko niin!" "Mutta teenpä sen sittenkin, herraseni", sanoo hän, "sillä näin meidän kesken, on minun pääni yhtä paljas kuin tykin kuula — kysykää Fannylta, eikö ole. Mitenkä se lapsirukka säikähtyi kerta pienenä odottamatta tullessaan pukuhuoneeseeni, kun minulla ei ollut tekotukkaa päässä!" "Minä toivon, että lady Fanny on tointunut siitä pelästyksestä", sanoi "eräs" katsoen ensin häntä ja sitten minua sen näköisenä kuin olisi tahtonut syödä minut. Ja uskoisitteko sen? Lady Fanny ei osannut muuta vastata kuin "kiitos, varsin hyvin, mylord", ja sen hän sanoi niin hämillään ja punastuvana kuin meidän oli tapana koulussa lausua Virgiliusta — kun emme sitä osanneet. Mylord yhä katseli minua ylen tuikeasti ja mutisi jotakin toivoneensa saavansa sijan lady Drumin vaunuissa, kun oli väsynyt
  • 75. ratsastukseen, mihin lady Fanny hänkin mutisi jotakin "isoäidin ystävästä". "Sinun ystäväsihän, Fanny, pitäisi sinun sanoa", sanoo lady Jane. "Me emme varmaankaan koskaan olisi tulleet puistoon, ellei Fanny ehdottomasti olisi tahtonut tuoda herra Titmarshia tänne. Sallikaa minun esittää kreivi Tiptoff — herra Titmarsh." Mutta sen sijaan että olisi nostanut hattua, niinkuin minä tein, hänen armonsa murahti toivovansa toista tilaisuutta ja nelisti taas pois mustan hevosensa selässä. Miten pirhanassa minä olisin häntä loukannut, en ollenkaan osaa ymmärtää. Mutta näyttipä siltä, että minä olin määrätty sinä päivänä loukkaamaan kaikkia herrasmiehiä, sillä eikös nyt tullut paikalle hänen kunnianarvoisuutensa Edmund Preston, Hänen Majesteettinsa valtiosihteerejä (minkä aivan hyvin tiesin konttorimme kalenterista) ja lady Janen herra mies. Hänen kunnianarvoisuutensa ratsasti pientä vankkaa kimoa ja oli lihava, kalvakka mies, joka näytti siltä kuin ei hän koskaan liikkuisi raittiissa ilmassa. "Kuka perhana tuo on?" tokasi hän vaimolleen äreästi katsellen minua ja häntä. "Oh, hän on isoäidin ja Janen ystäviä", ehätti lady Fanny sanomaan samalla silmäten, kuin mikäkin viekas vekkuli kun hän oli, perin veitikkamaisesti sisareensa, joka puolestaan näytti hirveän säikähtyneeltä ja pyytelevästi katsoi sisareensa eikä uskaltanut ääntää sanaakaan. "Niin, todella", jatkoi lady Fanny, "herra Titmarsh on isoäidin serkku, äidin puolelta, Hoggartyn kautta. Etkö tullut tuntemaan Hoggarteja, Edmund, ollessasi lordi Bagwigin kanssa
  • 76. Irlannissa? Salli minun esittää sinulle isoäidin serkku, herra Titmarsh; herra Titmarsh, lankoni, herra Edmund Preston." Koko ajan koetti lady Jane polkea sisartansa jalalle niin kovaan kuin taisi, mutta se pieni ilkimys ei ottanut sitä miksikään, ja minä, joka en ollut koskaan kuullut tästä orpanuudesta, olin niin hämilläni kuin olla saattaa. Mutta minä en tuntenut kreivitär Drumia läheskään niin hyvin kuin hänen pojantyttärensä, se hurja tyttö. Sillä vanha vaimo, joka juuri oli kutsunut serkukseen Gus Hoskins parkaa, näytti kuvittelevan koko maailman olevan sukulaisuussuhteissa hänen kanssansa, ja sanoi: "Niin, me olemme sukua, emmekä kovin etäistäkään. Mick Hoggartyn isoäiti oli Millicent Brady, ja hän ja täti Towzer olivat sukua, kuten koko maailma tietää, sillä Decimus Brady Ballybradystä nai täti Towzerin äidin oikean serkun, Bell Swiftin — hän ei ollut sukua tuomioprovastille, rakkaani, jonka perheen laita oli niin ja näin.[13] No, eikö se ole selvä?" "Oi, täydellisesti, isoäiti", myönsi lady Jane nauraen, mutta kunnianarvoisa herra, joka vielä ratsasti vierellämme, näytti perin äreältä ja happamalta. "Varmaanhan sinä tulit tuntemaan Hoggartyt, Edmund? — ne kolmetoista punatukkaista tyttöä — yhdeksän sulotarta ja neljä päällisiksi, kuten Clanboy paran oli tapana kutsua heitä. Clan parka! Teidän ja minun serkkuni, herra Titmarsh, ja hirveästi rakastunut minuun hänkin. Etkö nyt muista niitä kaikkia, Edmund? — etkö muista? — et muista Biddyä ja Minnyä, ja Theddyä ja Widdyä, ja Mysiä ja Grizzyä, ja Pollya ja Dollyä ja niitä muita?"
  • 77. "Hiiteen kaikki Hoggartyn missit!" sanoi kunnianarvoisa herra, ja sanoi sen niin pontevasti, että hänen harmaa kimonsa äkkiä potkasi takajaloillaan, jolloin herra oli vähällä lentää päistikkaa maahan. Lady Jane kirkasi, lady Fanny nauroi, vanha lady Drum ei näyttänyt olevan millänsäkään ja sanoi: "Sen olette ansainnutkin siinä kiroillessanne, te ilkeä mies!" "Eikö Teidän olisi parempi tulla vaunuihin, Edmund — herra Preston?" lausui hänen vaimonsa tuskaisena. "Minä kyllä nousen heti pois, rouva hyvä", sanon minä. "Mitä joutavia, pysykää paikallanne!" käski lady Drum, "vaunut ovat minun. Ja jos herra Preston näkee hyväksi kiroilla minun ikäiselleni naiselle tuohon inhottavaan moukkamaiseen tapaan — inhottavaan moukkamaiseen tapaan, sanon vieläkin kerran —, en voi käsittää, mistä hyvästä minun ystäväni näkisivät vaivaa hänen vuoksensa. Antaa hänen istua ajajan kanssa, jos hän haluaa, tai tulla istumaan meidän kahden keskelle." Ilmeistä oli, että lady Drum vihasi sydämensä pohjasta poikansa vävyä, ja minä olen huomannut, ettei tämäntapainen viha ole hienoissa perheissä mitenkään harvinainen. Herra Preston, Hänen Majesteettinsa valtiosihteerejä, oli totta puhuaksemme kovasti peloissaan hevosensa selässä ja siksi suuresti iloissaan päästessään pois hyppivältä ja potkivalta elukalta. Hänen kalvakat kasvonsa näyttivät vielä kalpeammilta kuin ennen ja hänen kätensä ja jalkansa vapisivat, kun hän kapusi alas kimon selästä ja antoi ohjakset palvelijalleen. Minusta mies — tarkotan isäntää — tuntui vastenmieliseltä heti ensi hetkestä, kun hän tuli luoksemme ja puhutteli niin raa'alla tavalla lempeätä, suloista vaimoansa, ja mielestäni hän oli kurja pelkuri, niinkuin seikkailu kimon selässä
  • 78. osottikin hänen olevan. Sillähän olisi, lempo soi, lapsikin ratsastanut, ja tuossa iso mies haihatteli sydän kurkussa jo ensi potkauksesta. "Oo, joutukaa, tulkaa toki sisään, Edmund", sanoi lady Fanny nauraen, ja vaunujen astuimet laskettiin alas ja heittäen minuun tuikean silmäyksen hän astui sisään aikoen asettua lady Fannyn kolkkaan (minäpä en mielinyt hievahtaa omastani, sen takaan), kun tuo pieni hulivili huudahti: "Oi ei, ei millään muotoa, herra Preston! Sulkekaa ovi, Thomas. Voi, kuinka hauskaa näyttää koko maailmalle kuinka valtiosihteeri istuu penkillä kolmantena!" Ja koko murjottavalta se valtiosihteeri näyttikin, sen voin vakuuttaa! "Ottakaa minun paikkani, Edmund, elkääkä välittäkö Fannyn hullutuksista", pyysi lady Jane arasti. "Oh, ei, pyydän, rouva hyvä, istukaa pois. Minun on tässä varsin mukava, varsin mukava, ja niin toivon, että herra — tämän herrankin on." "Täydellisesti, sen vakuutan", sanon minä. "Minä olin aikeissa tarjoutua ratsastamaan hevosenne kotiin Teidän puolestanne, koska Te näytitte sitä kovasti pelkäävän, mutta seikka oli se, että minun oli tässä niin mukava, että todellakaan en voinut irtautua paikaltani." Kuinka virnistelikään vanha lady Drum, kun minä puhuin näin! Kuinka hänen pienet silmänsä vilkuttivat ja hänen pieni viekas suunsa liehehti! Minä en voinut olla puhumatta, nähkääs, sillä sisuni kiehui.
  • 79. "Teidän seuranne on aina meille iloksi, serkku Titmarsh", sanoo hän ojentaen minulle kultaista nuuskarasiaa, josta minä otin hyppysellisen ja aivastin ylväästi kuin lordi. "Koska olette kutsunut tämän herrasmiehen vaunuihinne, lady Jane Preston, niin totta kai kutsutte hänet kotiin päivällisellekin," sanoo herra Preston, sinisenä kiukusta. "Minä kutsuin hänet minun vaunuihini", oikasee vanha lady, "ja koska olemme menossa päivälliselle Teidän luoksenne ja Te niin hartaasti haluatte, niin on minun erittäin mieluista nähdä hänet siellä." "Valitan, että olen lupautunut toisaalle", sanoin minä. "Oh, tosiaan, mikä vahinko!" sanoo kunnianarvoisa herra Edmund, yhä äkäisenä tuijottaen vaimoonsa. "Mikä vahinko, että tämä herrasmies — en muista nimeä — että Teidän ystävänne, lady Jane, on lupautunut toisaalle! Teidän olisi varmaankin ollut erinomaisen mieluista nähdä sukulaisenne Whitehallissa." Lady Drum oli ilmeisesti hassastunut sukulaisuuksien keksimiseen, mutta tämä hänen kunnianarvoisuutensa puhe oli sentään liika paljon. "Kuules Sam", sanon minä itselleni, "oles mies ja näytä kuntoasi!" Ja niin minä heti puutuin puheeseen ja sanoin: "No koska herra valtiosihteeristä se on niin kovasti tärkeätä, hyvät naiset, niin minä peruutan toisaalle antamani lupauksen, ja todellisella mielihyvällä haukkaan palasen hänen kanssaan. Mikä on Teidän ruokailuaikanne, sir?"
  • 80. Welcome to our website – the perfect destination for book lovers and knowledge seekers. We believe that every book holds a new world, offering opportunities for learning, discovery, and personal growth. That’s why we are dedicated to bringing you a diverse collection of books, ranging from classic literature and specialized publications to self-development guides and children's books. More than just a book-buying platform, we strive to be a bridge connecting you with timeless cultural and intellectual values. With an elegant, user-friendly interface and a smart search system, you can quickly find the books that best suit your interests. Additionally, our special promotions and home delivery services help you save time and fully enjoy the joy of reading. Join us on a journey of knowledge exploration, passion nurturing, and personal growth every day! ebookbell.com