/ember-href-to

:link: A lightweight alternative to {{link-to}}

Primary LanguageJavaScriptApache License 2.0Apache-2.0

ember-href-to

A lightweight alternative to {{link-to}}. No components, no class bindings - just a bound anchor href and a click handler.

Build Status Ember Observer Score

Why use it?

Every time you use a {{link-to}}, you create a component. This is usually fine, but in cases where you're creating many of these, performance can suffer. {{href-to}} simply creates a URL and is 12x faster than {{link-to}} in Ember 1.13.4.

Questions? Ping me @gavinjoyce

Installation

This is an Ember CLI addon, to install:

ember install ember-href-to

Supported Ember Versions

  • v5.0.1. supports Ember versions >=3.1 & <3.27
  • It does not work in apps using Ember's modernized LinkTo, which was introduced in Ember 3.27 and built using Glimmer components. See this comment for more info.

Usage Instructions

{{href-to}} has the same interface as {{link-to}}, you can use it to link to static and dynamic routes in your ember application:

<a href="{{href-to 'index'}}">Go Home</a>
<a href="{{href-to 'contacts.contact' contact}}">View Contact 1</a>
<a href="{{href-to 'contacts.contact' 2}}">View Contact 2</a>
<a href="{{href-to 'contact-us' (query-params section='first')}}"
  >You can also use query params</a
>
<a href="{{href-to 'contact-us'}}#first"
  >You can also use fragment identifiers</a
>
<a href="{{href-to 'contact-us'}}" data-href-to-ignore>
  If you have a catchall route (this.route('catchall', { path: "/*" })), you
  need to add the attribute "data-href-to-ignore", otherwise you will always
  match it
</a>

As {{href-to}} simply generates a URL, you won't get automatic active class bindings as you do with {{link-to}}. Clicking on a {{href-to}} URL will trigger a full router transition though:

href-to2

Development Instructions

  • git clone this repository
  • npm install
  • bower install

Running