Подтвердить что ты не робот

JavaScript-вспомогательные библиотеки? Нет данных DOM или AJAX

Поскольку я пишу JavaScript, я всегда пропускаю некоторые довольно простые языковые функции, которых JavaScript просто не имеет. Так есть ли какая-нибудь библиотека, которая привнесла бы такие функции, как функции обрезки, sprintf, str.endwith и т.д. В JavaScript?

Я просто написал эти функции слишком много раз, и мне тоже надоело копировать/вставлять их из моего старого кода. Было бы неплохо иметь библиотеку, которая реализована и протестирована в одном месте.

Примечание, что я не говорю об Ajax/DOM-библиотеках, таких как jQuery или Dojo и тому подобное. Я знаю, что эти библиотеки приносят некоторые из функций, которые я здесь говорю, но не все. И я хотел бы иметь также независимую от среды библиотеку, чтобы одна и та же библиотека могла использоваться с JavaScript на стороне сервера.

Лучшая библиотека, которую я нашел, это php.js, но мне не нравится, как она загрязняет глобальное пространство имен, Я также не слишком люблю, как PHP-функции называются.

ИЗМЕНИТЬ

Я соглашаюсь с Underscore.js, поскольку выясняется, что его очень легко расширить. Поэтому я расширил его собственным набором строковых функций. Посмотрите здесь:

https://github.com/epeli/underscore.string

4b9b3361

Ответ 1

Посмотрите Underscore.


С другой стороны, то, что вы хотите, кажется достаточно простым:

function endsWith(str, end) {
    return String(str).lastIndexOf(end) === str.length - end.length;
}

function trim(str) {
    return String(str).replace(/^\s\s*|\s\s*$/g, '');
} // btw, should really be checking for String.prototype.trim

// ... and google "JavaScript sprintf" for a sprintf implementation

Ответ 2

Вы можете проверить Google Closure Library. Он предоставляет следующие пакеты:

array (1)
asserts (1)
async (3)
base.js
color (3)
crypt (5)
cssom (2)
datasource (8)
date (4)
debug (16)
demos (6)
deps.js
disposable (1)
dom (28)
editor (15)
events (18)
format (3)
functions (1)
fx (12)
gears (14)
graphics (25)
history (1)
i18n (15)
iter (1)
json (1)
locale (16)
math (15)
memoize (1)
module (10)
net (29)
object (1)
positioning (9)
proto (2)
proto2 (10)
pubsub (1)
reflect (1)
spell (1)
string (3)
structs (18)
style (2)
testing (37)
timer (1)
ui (133)
uri (2)
useragent (9)

Библиотека Closure является открытым исходным кодом, а Google должен использовать ее в Gmail, Картах, Документах, Сайтах, Книгах, Reader, Blogger, Календарь и Picasa.

Вы можете проверить Array и String, чтобы получить быстрое первое впечатление.

Ответ 3

Возможно, вы захотите проверить MooTools. Это очень модульная библиотека с акцентом на улучшении кода JavaScript, а не только на JavaScript-среде JavaScript (DOM, AJAX и т.д.).

Ответ 4

Я не знаю никаких библиотек, которые предоставляют такие функции, кроме популярных библиотек AJAX/DOM. Почему бы не вручную выбрать функции из PHP.js и добавить их в собственное пространство имен? Вы даже можете переименовать их в любое удобное для вас время.

Ответ 5

Вы можете проверить Mootools Server.

Это настраиваемая сборка MooTools без какого-либо компонента относительно браузеры. Включает класс, ядро ​​и Родные расширения. Это конкретно для серверных сред, таких как как v8cgi, Rhino или SpiderMonkey.

Не знаю, подходит ли это для вашей цели, но это один из способов.

Ответ 6

Подстрока Javascript поможет вам... если вам тоже не понравится, я рекомендую регулярные выражения...

В большинстве случаев, когда мне нужны эти функции на очень простой странице, я делаю regex своим лучшим другом...

Ответ 8

Я согласен с Гарисом. Вот страница, показывающая функции объекта JS String.

http://www.w3schools.com/jsref/jsref_obj_string.asp

Используя приведенную выше информацию, вы можете написать свои собственные функции, используя те, что указаны выше: например. Если вы хотите обрезать строку, вы сделали бы что-то вроде этого, чтобы разрешить определенное количество символов (это добавляет elipsis, вы можете удалить это, конечно):

String.prototype.trim= function(num){
   var str = this;
   if (!num) {
      num = 20;
   }
   if (str.length > num) {
      str = str.slice(0, num);
      str += '...';
   } else {
      str = this + '';
   }
   return str;

}
alert('this string needs to be shorter'.trim(10));

Выход был бы: этот strin...