tikiwiki/packages/tiki-pkg-casperjs/jerome-breton/casperjs/docs/writing_modules.rst
2023-11-20 20:52:04 +00:00

84 lines
2.2 KiB
ReStructuredText
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

.. _writing_modules:
.. index:: Modules, Modules, Custom module
Writing CasperJS modules
========================
As of 1.1, CasperJS relies on PhantomJS' native ``require()`` function internally though it had to be patched in order to allow requiring casper modules using their full name, eg. ``require('casper')``.
So if you plan to write your own modules and use casperjs' ones from them, be sure to call the ``patchRequire()`` function::
// my module, stored in universe.js
// patching phantomjs' require()
var require = patchRequire(require);
// now you're ready to go
var utils = require('utils');
var magic = 42;
exports.answer = function() {
return utils.format("it's %d", magic);
};
.. warning::
When using CoffeeScript ``global.require`` must be passed to ``patchRequire()`` instead of just ``require``::
require = patchRequire global.require
utils = require 'utils'
magic = 42
exports.answer = ->
utils.format "it's ${magic}"
From your root casper script::
var universe = require('./universe');
console.log(universe.answer()); // prints "It's 42"
.. versionadded:: 1.1.
.. hint::
CasperJS allows using nodejs modules installed through npm_. Note that since CasperJS uses it's own JavaScript environment, npm modules that use node-specific features will not work under CasperJS.
As an example, let's install the underscore_ library:
.. _npm: https://npmjs.org/
.. _underscore: http://underscorejs.org/
.. code-block:: text
$ npm install underscore
Then, ``require`` it like you would with any other nodejs compliant module::
//npm-underscore-test.js
var _ = require('underscore');
var casper = require('casper').create();
var urls = _.uniq([
'http://google.com/',
'http://docs.casperjs.org/',
'http://google.com/'
]);
casper.start().eachThen(urls, function(response) {
this.thenOpen(response.data, function(response) {
this.echo(this.getTitle());
});
});
casper.run();
Finally, youll probably get something like this:
.. code-block:: text
$ casperjs npm-underscore-test.js
Google
CasperJS documentation | CasperJS 1.1.0-DEV documentation