diff --git a/maud_extras/lib.rs b/maud_extras/lib.rs
index bbff757..93e3db2 100644
--- a/maud_extras/lib.rs
+++ b/maud_extras/lib.rs
@@ -30,3 +30,29 @@ impl<T: AsRef<str>> Render for Css<T> {
         }
     }
 }
+
+/// Links to an external javascript.
+///
+/// # Example
+///
+/// ```rust
+/// # #![feature(plugin)]
+/// # #![plugin(maud_macros)]
+/// # extern crate maud;
+/// # extern crate maud_extras;
+/// # use maud_extras::*;
+/// # fn main() {
+/// let markup = html! { (Js("app.js")) };
+/// assert_eq!(markup.into_string(),
+///            r#"<script src="app.js"></script>"#);
+/// # }
+/// ```
+pub struct Js<T: AsRef<str>>(pub T);
+
+impl<T: AsRef<str>> Render for Js<T> {
+    fn render(&self) -> Markup {
+        html! {
+            script src=(self.0.as_ref()) {}
+        }
+    }
+}